add_filter()
এবং add_action()
কোনও প্লাগইন লোড হওয়ার আগে উপলব্ধ। সুতরাং আপনি আপনার প্লাগইন বা থিমের প্রথম লাইনে উভয়ই ব্যবহার করতে পারেন।
পাঠযোগ্যতার জন্য আমি আপনার মূল ফাইলটির একেবারে শীর্ষে গ্রুপ এ্যাকশন এবং ফিল্টার রেজিস্ট্রেশন করার পরামর্শ দিচ্ছি:
- একটি প্লাগইনে, প্লাগইন শিরোলেখ সহ ফাইল
- একটি থিম মধ্যে
functions.php
এই নিয়মের ব্যতিক্রম রয়েছে:
- শৃঙ্খলিত কলব্যাকস । ইন এই উদাহরণে আমি একটি কর্ম রেজিস্টার
shutdown
শুধুমাত্র যখন প্রথম ফিল্টার wp_nav_menu_objects
বলা হয়েছে। সুতরাং দ্বিতীয় কলব্যাকটি প্রথমটির মতো একই সময়ে নিবন্ধিত হতে পারে না।
ওওপি শৈলী। কখনও কখনও কলব্যাকগুলি নিবন্ধ করার আগে আপনাকে ক্লাসের সদস্যদের সেট আপ করতে হয়। খুব অনুরূপ উদাহরণ ব্যবহার করে …
add_action(
'plugins_loaded',
array ( T5_Plugin_Class_Demo::get_instance(), 'plugin_setup' )
);
class T5_Plugin_Class_Demo
{
public function plugin_setup()
{
$this->plugin_url = plugins_url( '/', __FILE__ );
$this->plugin_path = plugin_dir_path( __FILE__ );
$this->load_language( 'plugin_unique_name' );
// more stuff: register actions and filters
}
}
… আমরা দেখছি ক্লাসটির ইনস্ট্যান্টেশন অন্য প্লাগইন দ্বারা বন্ধ করা যেতে পারে, এবং একটি শিশু শ্রেণি আরও বা বিভিন্ন ফিল্টার এবং ক্রিয়া নিবন্ধ করতে পারে could
দলবদ্ধকরণের পাশাপাশি আপনি আরও এক ধাপ এগিয়ে যেতে পারেন এবং অন্যান্য বিকাশকারীদের জন্য কাস্টমাইজেশন আরও সহজ করার জন্য একটি কাস্টম অ্যাকশন অফার করতে পারেন।
আমি যে থিমটিতে কাজ করছি তার উদাহরণ এখানে:
add_action( 'activate_header', 't5_activate_screen' );
// wp_loaded is too late, WP customizer would not detect the features then.
add_action( 'after_setup_theme', 't5_setup_custom_background' );
add_action( 'after_setup_theme', 't5_setup_custom_header' );
add_filter( 'body_class', 't5_enhance_body_class' );
add_action( 'comment_form_before', 't5_enqueue_comment_reply' );
add_action( 'content_before', 't5_frontpage_widget' );
add_action( 'footer_before', 't5_loop_navigation' );
add_action( 'get_the_excerpt', 't5_excerpt_clean_up', 1 );
add_action( 'header_before', 't5_skiplink', 0, 0 );
add_filter( 'the_title', 't5_fill_empty_title', 20, 1 );
add_action( 'wp_enqueue_scripts', 't5_enqueue_style' );
add_action( 'wp_enqueue_scripts', 't5_enqueue_script' );
add_action( 'wp_loaded', 't5_setup' );
add_action( 'wp_loaded', 't5_page_enhancements' );
add_action( 'wp_loaded', 't5_post_format_support' );
add_action( 'wp_loaded', 't5_load_theme_language' );
add_action( 'wp_loaded', 't5_setup_sidebars' );
add_filter( 'wp_nav_menu_items', 't5_customize_top_menu', 10, 2 );
add_filter( 'wp_nav_menu_args', 't5_nav_menu_args', 10, 1 );
add_filter( 'wp_title', 't5_wp_title_filter', 20, 2 );
add_shortcode( 'gallery', 't5_shortcode_gallery' );
add_shortcode( 'wp_caption', 't5_shortcode_img_caption' );
add_shortcode( 'caption', 't5_shortcode_img_caption' );
// Use this action to unregister theme actions and filters.
do_action( 't5_theme_hooks_registered' );
শেষ লাইনটি গুরুত্বপূর্ণ: একটি চাইল্ড থিম বা একটি প্লাগইন t5_theme_hooks_registered
এখন ক্রিয়ায় প্রবেশ করতে পারে এবং আগের কোনও হুকটি নিবন্ধন করতে পারে। এটি অগ্রাধিকারের সাথে লড়াই করে সংরক্ষণ করবে এবং আমি যে কোনও সময় আমার কলব্যাকের অগ্রাধিকারগুলি পরিবর্তন করতে মুক্ত ।
তবে একা সোর্স কোড অর্ডারে নির্ভর করবেন না। আপনি আপনার ডক ব্লকে যে হুক ব্যবহার করছেন তা নথিভুক্ত করুন। আমি তার wp-hook
জন্য একটি কাস্টম ট্যাগ ব্যবহার করছি। এখানে একই থিমের শৃঙ্খলাবদ্ধ হুক সহ একটি উদাহরণ রয়েছে:
/**
* Register handler for auto-generated excerpt.
*
* @wp-hook get_the_excerpt
* @param string $excerpt
* @return string
*/
function t5_excerpt_clean_up( $excerpt )
{
if ( ! empty ( $excerpt ) )
return $excerpt;
add_filter( 'the_content', 't5_excerpt_content' );
return $excerpt;
}
/**
* Strip parts from auto-generated excerpt.
*
* @wp-hook the_content
* @param string $content
* @return string
*/
function t5_excerpt_content( $content )
{
remove_filter( current_filter(), __FUNCTION__ );
return preg_replace( '~<(pre|table).*</\1>~ms', '', $content );
}
এই ফাংশনগুলি কোথায় ডাকা হয় তা দেখতে আপনাকে স্ক্রোল করতে হবে না, ডক ব্লকের দিকে একবার নজর দেওয়া যথেষ্ট। এর জন্য কিছু প্রচেষ্টা প্রয়োজন, কারণ আপনাকে সিঙ্ক, নিবন্ধকরণ এবং মন্তব্য উভয়ই রাখতে হবে, তবে দীর্ঘমেয়াদে এটি মূল্যবান সময় সাশ্রয় করে।