در مثال بالا به الگو توجه داشته باشید:
- <?php مکانی است که قلاب را برای کارکردن قرار می دهید
- add_action دستور ایجاد قلاب عمل است
- wp_print_footer_scripts این target_hook است که شما را به یک عملکرد جدید پیوند می دهد
- themefars_custom_footer_scripts تابع نصب شده و به target_hook پیوند داده شده است
- <script> بیانگر متنی است که می خواهید در target_hook نشان داده شود (در این حالت، این wp_print_footer_scripts است)
ایجاد هوک فیلتر
هوک فیلتر برای اصلاح، فیلتر یا جایگزینی یک مقدار با مقدار جدید استفاده می شود. می توانید با استفاده از عملکرد apply_filters() هوک فیلتر ایجاد کنید.
- $score = 100 مقدار نمره اولیه است
- echo “Current score is: ” نشان دهنده اسکریپتی است که شما نشان می دهید
- apply_filters دستور ایجاد هوک فیلتر است
- ‘change_score’, $score تابعی که باید فیلتر شود
این فیلتر است:
add_filter( 'change_score', 'function_change_score' ); function function_change_score( $score ){ ? $score+=100; ? return $score; }
- Add_filter برای اتصال هوک فیلتر با یک عملکرد جدید ایجاد شده است
- ‘Change_score‘ هوک هدف است که اصلاح خواهد شد
- ‘Function_change_score‘ یک تابع جدید است که بر مقدار اولیه تأثیر می گذارد
- ? $score+=100; کدی است برای افزودن مقدار بیشتر به مقدار اولیه ($score)
- ? return $score; کد برای نشان دادن مقدار جدید در پایان است
نتیجه باید به شکل زیر باشد:
Current score: 200
حذف اقدامات و فیلترها
function disable_emojis() { remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); remove_action( 'wp_print_styles', 'print_emoji_styles' ); remove_action( 'admin_print_styles', 'print_emoji_styles' ); remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' ); add_action( 'init', 'disable_emojis' ); }
کد بالا با هدف از بین بردن عملکرد emoji به طور کامل در وردپرس است. به وضوح نشان می دهد که محدودیتی در تعداد دستورات remove_filter که می توانید در functions.php تعبیه کنید وجود ندارد.
با سلام. من برای ویجت پست میخام کاری کنم که پست های مربوط به کتگوری پست حاضر به صورت اتوماتیک نمایش داده بشن و من کتگوری رو داخل terms انتخاب نکنم. واسه همین از کد زیر استفاده میکنم اما فقط پست حاضر نمایش داده می شه.
// Showing related posts by current post category in Posts Widget
add_action( ‘elementor_pro/posts/query/my_custom_filter’, function( $query ) {
// Get current post category
$current_post_id = get_queried_object_id();
$current_cat = get_the_category( $current_post_id );
if( empty( $current_cat ) ) {
return;
}
// Modify the query
$query->set( ‘category__in’, [ $current_cat[0]->term_id ] );
// Make sure we don’t get current post
$not_in = $query->get( ‘post__not_in’ );
$not_in[] = $current_post_id;
// Modify the query
$query->set( ‘post__not_in’, $not_in );
} );