Hook pentru încărcarea articolelor și paginilor
Am nevoie să execut o funcție când un anumit articol sau pagină este încărcată. Există vreun hook care îmi permite să verific dacă un articol este afișat în timpul încărcării paginii?

Puteți utiliza hook-ul wp
și să verificați obiectul global $wp_query
sau orice condițional.
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>Nimic de văzut aici! Verifică obiectul!<br /></p><pre>%s</pre>',
var_export( $GLOBALS['wp_query'], true )
);
}
Consultați: wp
în codex.wordpress.org și wp
în developer.wordpress.org

A) Rulează înainte de after_setup_theme
și setup_theme
, deci este accesibil doar pentru plugin-uri B) în interiorul WP :: main()
, care este apelat din wp-settings.php.

Folosește template_redirect
care este un hook de acțiune care se declanșează înainte de randarea șablonului;
add_action('template_redirect', 'hooker');
function hooker(){
//Se încarcă chiar înainte de selectarea și randarea șablonului pe ecran
}

@PoulomiNag Nicio problemă, mă bucur că ți-ai găsit răspunsul mai sus. Totuși, cred că o mică observație este că wp
rulează după hook-ul after_theme_setup
, deci nu este accesibil doar de plugin-uri, ceea ce îl face sigur de utilizat în teme.

Tocmai am verificat și da; wp
rulează după after_theme_setup
. Dar am nevoie de el pentru plugin-ul meu. Așa că atât wp
cât și template_redirect
funcționează bine pentru mine. Aș fi vrut să pot accepta două răspunsuri aici! :)

E în regulă, nu este necesar să accepte ambele, voiam doar să clarific ordinea în care se declanșează. Vreau să mă asigur că nu înnebunesc, știi. Mult succes cu plugin-ul tău...

Am folosit destul de des următorul cod pentru a încărca meta box-uri personalizate pe pagini (în loc de postări personalizate).
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', 'Cu cine lucrăm...', 'how_we_do_it_who', 'page', 'normal', 'high');
add_action('save_post', 'save_how_we_do_it_meta');
}
}
}

Mulțumesc Darronz. Dar am nevoie de un hook care să funcționeze în front-end în timpul încărcării unei pagini. Ai vreo idee?

Dacă ai schimbat codul de mai sus to add_action('init', // etc)
atunci va funcționa la încărcarea paginii și nu doar în secțiunea de administrare.
