पोस्ट और पेज लोड के लिए हुक


17

जब किसी विशेष पोस्ट या पेज को लोड किया जाता है तो मुझे एक फ़ंक्शन चलाने की आवश्यकता होती है। क्या कोई हुक है जो मुझे जांचने देता है कि क्या पेज लोड के दौरान कोई पोस्ट प्रदर्शित हो रही है?


सार्वजनिक या व्यवस्थापक पक्ष / सामना करना पड़ रहा है?
केसर

सामने के छोर के लिए। मूल रूप से मैं इसे तभी ट्रिगर करना चाहता हूं जब किसी विशेष एकल कस्टम पोस्ट प्रकार को प्रदर्शित किया जाए।
पोलोमी नाग

जवाबों:


24

आप wpहुक का उपयोग कर सकते हैं और global $wp_queryऑब्जेक्ट या किसी भी सशर्त की जांच कर सकते हैं।

add_action( 'wp', 'wpse69369_special_thingy' );
function wpse69369_special_thingy()
{
    if (
        'special_cpt' === get_post_type()
        AND is_singular()
    )
        return print "Yo World!";

    return printf(
        '<p>Nothing to see here! Check the object!<br /></p><pre>%s</pre>',
        var_export( $GLOBALS['wp_query'], true )
    );
}

देखें: wpcodex.wordpress.org में और wpdeveloper.wordpress.org में


क्या आप मुझे बता सकते हैं कि 'wp' हुक कब चलता है?
पोलोमी नाग

ए) यह पहले चलता है after_setup_themeऔर setup_theme, इसलिए यह केवल प्लगइन्स बी के लिए सुलभ है) WP :: main(), जिसे wp-settings.php के भीतर से कॉल किया जाता है।
11:16

1
@kaiser नहीं करता है wpके बाद हुक आग after_setup_themeहुक और सही से पहले template_redirectइसलिए बनाने wpसुलभ विषयों के साथ-साथ प्लगइन्स द्वारा? (सिर्फ स्पष्ट करने के लिए?)
एडम

13

उपयोग करें template_redirectजो एक्शन हुक है जो टेम्पलेट रेंडर करने से पहले फायर करता है;

add_action('template_redirect', 'hooker');
function hooker(){
    //I load just before selecting and rendering the template to screen
}

@PoulomiNag कोई समस्या नहीं, ख़ुशी है कि आपने अपना उत्तर ऊपर पाया। हालांकि मुझे लगता है कि एक छोटा नोट हुक के wpबाद चलता है after_theme_setup, इसलिए यह प्लगइन्स द्वारा सुलभ नहीं है, यह थीम में उपयोग करने के लिए सुरक्षित है।
एडम

मैंने अभी जाँच की और हाँ; wpके बाद चलता है after_theme_setup। लेकिन मुझे अपने प्लगइन के लिए इसकी आवश्यकता है। तो wpसाथ ही साथ template_redirectदोनों मेरे लिए ठीक भी हैं। काश मैं यहाँ दो उत्तर स्वीकार कर पाता! :)
पोलोमी नाग

यह ठीक है, दोनों को स्वीकार करने के लिए आवश्यक नहीं है, बस उस आदेश को स्पष्ट करना चाहते थे जिसमें वे आग लगाते हैं। यकीन है कि मैं पागल नहीं हूँ तुम्हें पता है। अपने प्लगइन के साथ गुड लक ...
एडम

1

मैंने पृष्ठों पर कस्टम मेटा बॉक्स में लोड करने के लिए अक्सर (कस्टम पोस्ट के बजाय) का उपयोग किया है।

    add_action('admin_init','how_we_do_it_meta');

    function how_we_do_it_meta() {

        if ( $_SERVER['SCRIPT_NAME'] == '/wp-admin/post.php' ) {

            $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
            $template_file = get_post_meta($post_id,'_wp_page_template',TRUE);

            if ($template_file == 'page-how-we-do-it.php') {

                add_meta_box('how_we_do_it_who-meta', 'Who we work with...', 'how_we_do_it_who', 'page', 'normal', 'high');

                add_action('save_post', 'save_how_we_do_it_meta');

            }
        }
    }

धन्यवाद डारोनज़। लेकिन पेज लोड के दौरान सामने के छोर पर काम करने के लिए मुझे कुछ हुक की आवश्यकता होती है। कोई विचार?
पोलोमी नाग 7

यदि आपने उपर्युक्त को बदल दिया है, to add_action('init', // etc)तो यह केवल एडमिन सेक्शन के बजाय पेज लोड पर काम करेगा।
darronz

2
@darronz और फिर आपको ! is_admin()अंदर की जांच करने की आवश्यकता है , क्योंकि initहुक दोनों तरफ चलता है।
केसर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.