it-swarm.com.ru

Крюк для поста и загрузки страницы

Мне нужно запустить функцию при загрузке определенного поста или страницы. Есть ли какой-нибудь хук, который позволяет мне проверить, отображается ли сообщение во время загрузки страницы?

17
Poulomi Nag

Вы можете использовать ловушку wp и проверить объект global $wp_query или любое другое условие.

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 )
    );
}

Смотрите: wp в codex.wordpress.org и wp в developer.wordpress.org

22
kaiser

Используйте template_redirect , который является ловушкой действия, которая запускается перед отображением шаблона;

add_action('template_redirect', 'hooker');
function hooker(){
    //I load just before selecting and rendering the template to screen
}
13
userabuser

Я довольно часто использовал следующее для загрузки в собственные мета-блоки на страницах (а не в пользовательских сообщениях).

    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');

            }
        }
    }
0
darronz