Devo eseguire una funzione quando viene caricato un determinato post o una pagina. Esiste un hook che mi consente di verificare se un post viene visualizzato durante il caricamento della pagina?
Devo eseguire una funzione quando viene caricato un determinato post o una pagina. Esiste un hook che mi consente di verificare se un post viene visualizzato durante il caricamento della pagina?
Risposte:
È possibile utilizzare l' wp
hook e controllare l' global $wp_query
oggetto o qualsiasi condizionale.
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 )
);
}
Vedi: wp
in codex.wordpress.org e wp
in developer.wordpress.org
after_setup_theme
e setup_theme
, quindi, è accessibile solo per i plugin B) all'interno WP :: main()
, che viene chiamato dall'interno di wp-settings.php.
wp
hook non si attiva dopo l' after_setup_theme
hook e immediatamente prima di template_redirect
renderlo wp
accessibile da temi e plugin? (solo per chiarire?)
Utilizzare template_redirect
quale hook di azione viene attivato prima di eseguire il rendering del modello;
add_action('template_redirect', 'hooker');
function hooker(){
//I load just before selecting and rendering the template to screen
}
wp
corre dietro al after_theme_setup
gancio, quindi non è solo accessibile dai plugin, rendendolo sicuro da usare nei temi.
wp
corre dopo after_theme_setup
. Ma ne ho bisogno per il mio plugin. Così wp
come template_redirect
entrambi funzionano bene per me. Vorrei poter accettare due risposte qui! :)
Ho spesso usato quanto segue per caricare meta box personalizzate su pagine (piuttosto che post personalizzati).
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)
, funzionerà sul caricamento della pagina piuttosto che solo nella sezione di amministrazione.
! is_admin()
dentro, perché il init
gancio scorre su entrambi i lati.