تابع add_action وردپرس – اضافه کردن اکشن جدید

add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

همانطور که می‌دانید، وردپرس شامل سیستم هوک اکشن می‌باشد که می‌توان مثلا مشخص کرد که پس از انتشار یک پست، چه اتفاقی رخ دهد! در واقع چیزی همانند تعریف رویداد.

تابع add_action، با دریافت نام اکشن مورد نظر ،یک callback (تابعی جهت اجرا) و موارد دیگر، کاری که می‌خواهیم را در زمان روی دادن آن اکشن اجرا می‌کند. مثلا می‌خواهیم پس از انتشار یک پست، یک پیام چاپ شود یا اتفاق دیگری بیفتد.

ورودی‌ها

  • $tag (از نوع string):
    نام اکشن مورد نظر
  • $function_to_add (از نوع callback):
    یک تابع یا نام یک تابعی که در زمان روی دادن اکشن،اجرا می‌شود.
  • $priority (از نوع int) (اختیاری، مقدار پیشفرض = 10):
    اولویت اجرایی کال‌بکی (ورودی قبلی)، نسبت به کال‌بک‌های دیگری که برای این اکشن اضافه شده‌اند را مشخص می‌کند. هرچه مقدار آن کمتر باشد، زودتر از بقیه اجرا خواهد شد.
  • $accepted_args (از نوع int) (اختیاری، مقدار پیشفرض = 1):
    تعداد پارامترهای مورد نیاز. مثلا ممکن است اکشنی 10 پارامتر داشته باشد و ما فقط به 2 مورد آن نیاز داشته باشیم. بنابراین آن را برابر 2 قرار می‌دهیم.

خروجی

(از نوع bool)، همیشه true برمی‌گرداند! (که یعنی خروجی آن فعلا مهم نیست)

مرتبط

سورس تابع اصلی

فایل: wp-includes/plugin.php

function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
    return add_filter( $tag, $function_to_add, $priority, $accepted_args );
}

مشاهده سورس کامل

هممانطور که می‌بینید، تابع add_action در واقع همان add_filter را اجرا می‌کندکه یعنی و می‌توان به جای استفاده از آن، از add_filter نیز استفاده کرد. ولی پیشنهاد ما این است که از همین تابع استفاده کنید؛ تا اگر وردپرس در آینده تغییرات دیگری نیز به داخل آن اضافه کرد، کد شما دچار مشکل نشود.

مثال

مثال 1: در اینجا تعیین شده است که در زمان روی دادن اکشن publish_post، تابع wpdocs_email_friends به عنوان یک callback اجرا شود. اکشن publish_post نیز پس از انتشار یک پست جدید روی می‌دهد زمانی که کال بک اجرا شود، کد نوشته شده داخل آن به یک ایمیلی اطلاع می‌دهد که یک پست جدیدی مننتشر شد.

/**
 * Send email to my friends.
 *
 * @param int $post_id Post ID.
 * @return int Post ID.
 */
function wpdocs_email_friends( $post_id ) {
    $friends = 'bob@example.org, info@fullkade.com';
    wp_mail( $friends, "sally's blog updated", 'I just put something on my blog: https://fullkade.com' );
 
    return $post_id;
}
add_action( 'publish_post', 'wpdocs_email_friends' );

مثال 2:

/**
 * Class WP_Docs_Class.
 */
class WP_Docs_Class {
 
    /**
     * Constructor
     */
    public function __construct() {
        add_action( 'save_post', array( $this, 'wpdocs_save_posts' ) );
    }
 
    /**
     * Handle saving post data.
     */
    public function wpdocs_save_posts() {
        // do stuff here...
    }
}
 
$wpdocsclass = new WP_Docs_Class();

مثال 3:

/**
 * Class WP_Docs_Static_Class.
 */
class WP_Docs_Static_Class {
 
    /**
     * Initializer for setting up action handler
     */
    public static function init() {
        add_action( 'save_post', array( get_called_class(), 'wpdocs_save_posts' ) );
    }
 
    /**
     * Handler for saving post data.
     */
    public static function wpdocs_save_posts() {
        // do stuff here...
    }
}
 
WP_Docs_Static_Class::init();

مثال 4:

/**
 * Warn about comment not found
 *
 * @param int $comment_id Comment ID.
 */
function echo_comment_id( $comment_id ) {
    printf( 'Comment ID %s could not be found', esc_html( $comment_id ) );
}
add_action( 'comment_id_not_found', 'echo_comment_id', 10, 1 );

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک