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?


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


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
}

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

            }
        }
    }

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.