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?


¿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


¿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
}

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

            }
        }
    }

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.