Gancho para carregamento de postagem e página

17

Preciso executar uma função quando uma determinada postagem ou página é carregada. Existe algum gancho que permita verificar se uma postagem está sendo exibida durante o carregamento da página?

Poulomi Nag
fonte
público ou administrador / voltado para?
Kaiser #
Para front end. Basicamente, eu quero que ele seja acionado apenas quando um determinado tipo de postagem personalizada é exibido.
Poulomi Nag

Respostas:

24

Você pode usar o wpgancho e verificar o global $wp_queryobjeto ou qualquer condicional.

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

Veja: wpem codex.wordpress.org e wpem developer.wordpress.org

kaiser
fonte
você pode me dizer quando o gancho 'wp' funciona?
Poulomi Nag
A) Ele roda antes after_setup_themee setup_theme, portanto, é acessível apenas para os plugins B) WP :: main(), que são chamados de wp-settings.php.
Kaiser #
1
@kaiser O wpgancho não dispara após o after_setup_themegancho e logo antes template_redirect, tornando-o wpacessível por temas e plugins? (só para esclarecer?)
Adam
13

Use template_redirectqual é o gancho de ação que é acionado antes de renderizar o modelo;

add_action('template_redirect', 'hooker');
function hooker(){
    //I load just before selecting and rendering the template to screen
}
Adão
fonte
@PoulomiNag Sem problemas, feliz por encontrar sua resposta acima. Embora eu ache que uma pequena nota é que wpcorre atrás do after_theme_setupgancho, então não é apenas acessível por plugins, tornando-o seguro para uso em temas.
Adam
Acabei de verificar e sim; wpcorre depois after_theme_setup. Mas eu preciso dele para o meu plugin. Então wp, assim como os template_redirectdois, funcionam bem para mim. Gostaria de poder aceitar duas respostas aqui! :)
Poulomi Nag
Tudo bem, não é necessário aceitar os dois, apenas queria esclarecer a ordem em que eles disparam. Certificando-se de que não estou ficando louco, você sabe. Boa sorte com o seu plugin ...
Adam
1

Eu costumava usar o seguinte para carregar metarcas personalizadas nas páginas (em vez de postagens personalizadas).

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

            }
        }
    }
darronz
fonte
Obrigado Darronz. Mas preciso de um gancho para trabalhar no front-end durante o carregamento da página. Alguma ideia?
Poulomi Nag
Se você alterou o to add_action('init', // etc)item acima , ele funcionará no carregamento da página, e não apenas na seção admin.
darronz
2
@darronz E então você precisa verificar o ! is_admin()interior, porque o initgancho funciona nos dois lados.
Kaiser #