Yazı ve sayfa yükleme için kanca


17

Belirli bir yazı veya sayfa yüklendiğinde bir işlevi çalıştırmak gerekir. Sayfa yükleme sırasında bir gönderinin görüntülenip görüntülenmediğini kontrol etmemi sağlayan herhangi bir kanca var mı?


kamu veya yönetici tarafı / bakan?
kaiser

Ön uç için. Temelde sadece belirli bir özel yazı türü görüntülendiğinde tetiklemek istiyorum.
Poulomi Nag

Yanıtlar:


24

wpKancayı kullanabilir ve global $wp_querynesneyi veya herhangi bir koşulu kontrol edebilirsiniz .

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

Bkz: wpcodex.wordpress.org ve wpdeveloper.wordpress.org.


'wp' kancasının ne zaman çalıştığını söyleyebilir misiniz?
Poulomi Nag

A) Daha önce çalışır after_setup_themeve setup_themebu yüzden sadece WP :: main()wp-settings.php içinden çağrılan içerideki B) eklentileri için erişilebilir .
Kaiser

1
@kaiser wpKanca , kancadan sonra after_setup_themeve template_redirectbu yüzden wpeklentilerin yanı sıra temalarla da erişilebilir hale gelmeden önce ateş etmiyor mu ? (sadece açıklığa kavuşturmak için mi?)
Adam

13

template_redirectŞablonu oluşturmadan önce tetiklenen eylem kancasını kullanın ;

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

@PoulomiNag Sorun değil, cevabınızı yukarıda bulduğunuza sevindim. Ben küçük bir not kanca wpsonra çalışır olduğunu düşünüyorum rağmen after_theme_setup, bu yüzden sadece eklentileri tarafından erişilebilir, temalarda kullanımı güvenli hale getirir.
Adam

Ben sadece kontrol ve evet; wpsonra çalışır after_theme_setup. Ama eklentim için buna ihtiyacım var. Yani wphem de template_redirectbenim için çok iyi çalışıyor. Burada iki cevabı kabul edebilseydim! :)
Poulomi Nag

Her ikisi de kabul etmek gerekli değil, sadece ateş ettikleri düzeni açıklığa kavuşturmak istedim. Deli olmayacağımdan emin ol. Eklentinizle iyi şanslar ...
Adam

1

Sayfalarda (özel yayınlar yerine) özel meta kutulara yüklemek için aşağıdakileri sık sık kullandım.

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

            }
        }
    }

Teşekkürler Darronz. Ancak bir sayfa yüklemesi sırasında ön uçta çalışmak için biraz kancaya ihtiyacım var. Herhangi bir fikir?
Poulomi Nag

Yukarıdakileri değiştirdiyseniz, to add_action('init', // etc)yalnızca yönetici bölümünde değil, sayfa yüklemesinde çalışır.
darronz

2
@darronz Ve sonra ! is_admin()içeri kontrol etmeniz gerekiyor , çünkü initkanca her iki tarafta da çalışıyor.
kaiser
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.