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?
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?
Réponses:
Vous pouvez utiliser le wp
crochet et vérifier l' global $wp_query
objet 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: wp
dans codex.wordpress.org et wp
dans developer.wordpress.org
after_setup_theme
et setup_theme
, il n'est donc accessible que pour les plugins B) à l'intérieur WP :: main()
, qui est appelé depuis wp-settings.php.
wp
crochet ne tire-t-il pas après le after_setup_theme
crochet et juste avant de le template_redirect
rendre wp
accessible par thèmes ainsi que par plugins? (juste pour clarifier?)
Utilisez template_redirect
qui 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
}
wp
court après le after_theme_setup
crochet, donc ce n'est pas seulement accessible par les plugins, ce qui le rend sûr à utiliser dans les thèmes.
wp
court après after_theme_setup
. Mais j'en ai besoin pour mon plugin. Ainsi wp
, les template_redirect
deux fonctionnent bien pour moi. J'aimerais pouvoir accepter deux réponses ici! :)
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');
}
}
}
to add_action('init', // etc)
cela fonctionnera sur le chargement de la page plutôt que seulement dans la section admin.
! is_admin()
intérieur, car le init
crochet fonctionne des deux côtés.