Muszę uruchomić funkcję po załadowaniu określonego posta lub strony. Czy jest jakiś hak, który pozwala mi sprawdzić, czy podczas ładowania strony jest wyświetlany post?
Muszę uruchomić funkcję po załadowaniu określonego posta lub strony. Czy jest jakiś hak, który pozwala mi sprawdzić, czy podczas ładowania strony jest wyświetlany post?
Odpowiedzi:
Możesz użyć wphaka i sprawdzić global $wp_queryobiekt lub dowolny warunek.
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 )
);
}
Zobacz: wpw codex.wordpress.org oraz wpw developer.wordpress.org
after_setup_themei setup_themedlatego jest dostępny tylko dla wtyczek B) wewnątrz WP :: main(), które są wywoływane z poziomu wp-settings.php.
wpogień hak po after_setup_themehaku i tuż przed template_redirectzatem czyni wpdojechać tematów, a także wtyczek? (tylko dla wyjaśnienia?)
Użyj, template_redirectktóry jest hakiem akcji, który uruchamia się przed renderowaniem szablonu;
add_action('template_redirect', 'hooker');
function hooker(){
//I load just before selecting and rendering the template to screen
}
wpbiegnie za after_theme_setuphakiem, więc nie jest ona dostępna tylko dla wtyczek, dzięki czemu można ją bezpiecznie używać w motywach.
wpbiegnie po after_theme_setup. Ale potrzebuję tego do mojej wtyczki. Tak wpsamo dobrze, jak template_redirectobie działają. Chciałbym przyjąć dwie odpowiedzi tutaj! :)
Dość często korzystałem z poniższych, aby załadować niestandardowe pola na stronach (zamiast niestandardowych postów).
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), będzie działał na ładowaniu strony, a nie tylko w sekcji administratora.
! is_admin()środku, ponieważ inithak biegnie po obu stronach.