Crochet pour le chargement des messages et des pages

17

J'ai besoin d'exécuter une fonction lorsqu'un article ou une page particulière est chargée. Existe-t-il un crochet qui me permet de vérifier si une publication est affichée pendant le chargement de la page?

Poulomi Nag
la source
côté public ou administrateur / face?
kaiser
Pour l'extrémité avant. Fondamentalement, je veux qu'il se déclenche uniquement lorsqu'un type de publication personnalisé particulier est affiché.
Poulomi Nag

Réponses:

24

Vous pouvez utiliser le wpcrochet et vérifier l' global $wp_queryobjet ou n'importe quel conditionnel.

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

Voir: wpdans codex.wordpress.org et wpdans developer.wordpress.org

kaiser
la source
pouvez-vous me dire quand le crochet «wp» fonctionne?
Poulomi Nag
A) Il s'exécute avant after_setup_themeet setup_theme, il n'est donc accessible que pour les plugins B) à l'intérieur WP :: main(), qui est appelé depuis wp-settings.php.
kaiser
1
@kaiser Le wpcrochet ne tire-t-il pas après le after_setup_themecrochet et juste avant de le template_redirectrendre wpaccessible par thèmes ainsi que par plugins? (juste pour clarifier?)
Adam
13

Utilisez template_redirectqui est le crochet d'action qui se déclenche avant le rendu du modèle;

add_action('template_redirect', 'hooker');
function hooker(){
    //I load just before selecting and rendering the template to screen
}
Adam
la source
@PoulomiNag Aucun problème, heureux d'avoir trouvé votre réponse ci-dessus. Bien que je pense qu'une petite note est celle qui wpcourt après le after_theme_setupcrochet, donc ce n'est pas seulement accessible par les plugins, ce qui le rend sûr à utiliser dans les thèmes.
Adam
Je viens de vérifier et oui; wpcourt après after_theme_setup. Mais j'en ai besoin pour mon plugin. Ainsi wp, les template_redirectdeux fonctionnent bien pour moi. J'aimerais pouvoir accepter deux réponses ici! :)
Poulomi Nag
C'est ok, pas nécessaire d'accepter les deux, je voulais juste clarifier l'ordre dans lequel ils tirent. Faire en sorte que je ne devienne pas fou tu sais. Bonne chance avec votre plugin ...
Adam
1

J'ai assez souvent utilisé ce qui suit pour charger des méta-boîtes personnalisées sur les pages (plutôt que des articles personnalisés).

    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
la source
Merci Darronz. Mais j'ai besoin d'un crochet pour travailler à l'avant lors d'un chargement de page. Des idées?
Poulomi Nag
Si vous avez modifié ce qui précède, to add_action('init', // etc)cela fonctionnera sur le chargement de la page plutôt que seulement dans la section admin.
darronz
2
@darronz Et puis vous devez vérifier à l' ! is_admin()intérieur, car le initcrochet fonctionne des deux côtés.
kaiser