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ć wp
haka i sprawdzić global $wp_query
obiekt 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: wp
w codex.wordpress.org oraz wp
w developer.wordpress.org
after_setup_theme
i setup_theme
dlatego jest dostępny tylko dla wtyczek B) wewnątrz WP :: main()
, które są wywoływane z poziomu wp-settings.php.
wp
ogień hak po after_setup_theme
haku i tuż przed template_redirect
zatem czyni wp
dojechać tematów, a także wtyczek? (tylko dla wyjaśnienia?)
Użyj, template_redirect
któ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
}
wp
biegnie za after_theme_setup
hakiem, więc nie jest ona dostępna tylko dla wtyczek, dzięki czemu można ją bezpiecznie używać w motywach.
wp
biegnie po after_theme_setup
. Ale potrzebuję tego do mojej wtyczki. Tak wp
samo dobrze, jak template_redirect
obie 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ż init
hak biegnie po obu stronach.