অ্যাড_ফিল্টার ব্যবহারের জন্য সেরা জায়গাটি কোথায়


12

add_filterআমার প্লাগইনটির initঅ্যাকশন হুক বা মূল প্লাগইন স্ক্রিপ্টে কেবল ফাংশনটি ব্যবহার করা উচিত ?

যেহেতু কখনও কখনও আমি দেখতে পেয়েছি যে লোকেরা পুরো জায়গা জুড়ে ফিল্টার ব্যবহার করছে এবং যদি আমি initহুকটি রাখি তবে এটি কিছু ক্ষেত্রে দেরি হবে।

action& filterহুকের অগ্রাধিকার সম্পর্কে কোনও সাধারণ পরামর্শ রয়েছে যাতে আমাদের আরও ধারাবাহিক কোড শৈলী থাকতে পারে?

উত্তর:


15

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 );
}

এই ফাংশনগুলি কোথায় ডাকা হয় তা দেখতে আপনাকে স্ক্রোল করতে হবে না, ডক ব্লকের দিকে একবার নজর দেওয়া যথেষ্ট। এর জন্য কিছু প্রচেষ্টা প্রয়োজন, কারণ আপনাকে সিঙ্ক, নিবন্ধকরণ এবং মন্তব্য উভয়ই রাখতে হবে, তবে দীর্ঘমেয়াদে এটি মূল্যবান সময় সাশ্রয় করে।


2
+1 টি। "ওওপি শৈলী" এর জন্য আমার পছন্দটি তার পরিবর্তে শ্রেণি / অবজেক্টের কাছে নিয়ন্ত্রণ সরিয়ে দেওয়া হয় যা এর পরে তার নির্মাত্রে ক্রিয়া / ফিল্টারগুলি নিবন্ধন করে (বা পরে উপযুক্ত হলে)। এটি ক্লাসের ব্যবহার / তাত্ক্ষণিক ব্যবহার না করা অবধি ভাল (ওওপি!) এনক্যাপসুলেশন সরবরাহ করে এবং হুকের নিবন্ধনকে পিছনে দেয়।
ওয়েবওয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.