Gancho para publicación y carga de página

17

Necesito ejecutar una función cuando se carga una publicación o página en particular. ¿Hay algún enlace que me permita verificar si se está mostrando una publicación durante la carga de la página?

Poulomi Nag
fuente
¿Público o administrador de lado / frente?
kaiser
Para el front end. Básicamente, quiero que se active solo cuando se muestre un único tipo de publicación personalizada.
Poulomi Nag

Respuestas:

24

Puede usar el wpgancho y verificar el global $wp_queryobjeto o cualquier 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 )
    );
}

Ver: wpen codex.wordpress.org y wpen developer.wordpress.org

emperador
fuente
¿podría decirme cuándo se ejecuta el gancho 'wp'?
Poulomi Nag
A) Se ejecuta antes after_setup_themey setup_theme, por lo que solo es accesible para los complementos B) dentro WP :: main(), que se llama desde wp-settings.php.
kaiser
1
@kaiser ¿No se wpdispara el gancho después del after_setup_themegancho y justo antes, template_redirectpor lo tanto, haciendo wpaccesible tanto los temas como los complementos? (solo para aclarar?)
Adam
13

Use template_redirectcuál es el gancho de acción que se dispara antes de renderizar la plantilla;

add_action('template_redirect', 'hooker');
function hooker(){
    //I load just before selecting and rendering the template to screen
}
Adán
fuente
@PoulomiNag No hay problema, me alegra que hayas encontrado tu respuesta arriba. Aunque creo que una pequeña nota es que se wpejecuta después del after_theme_setupgancho, por lo que no solo es accesible por complementos, por lo que es seguro de usar en temas.
Adam
Acabo de comprobar y sí; wpcarreras después after_theme_setup. Pero lo necesito para mi complemento. Así wpque template_redirectambos funcionan bien para mí. ¡Ojalá pudiera aceptar dos respuestas aquí! :)
Poulomi Nag
Eso está bien, no es necesario aceptar ambos, solo quería aclarar el orden en que se disparan. Asegurándome de que no me estoy volviendo loco, ¿sabes? Buena suerte con tu complemento ...
Adam
1

A menudo he usado lo siguiente para cargar meta cuadros personalizados en las páginas (en lugar de publicaciones 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
fuente
Gracias Darronz Pero necesito algo de gancho para trabajar en el front end durante una carga de página. ¿Algunas ideas?
Poulomi Nag
Si cambió lo anterior to add_action('init', // etc), funcionará en la carga de la página en lugar de solo en la sección de administración.
darronz
2
@darronz Y luego debes revisar el ! is_admin()interior, porque el initgancho se ejecuta en ambos lados.
kaiser