게시물 및 페이지로드를위한 후크


17

특정 게시물이나 페이지가로드 될 때 기능을 실행해야합니다. 페이지로드 중에 게시물이 표시되는지 확인할 수있는 후크가 있습니까?


공공 또는 관리 측 / 직면?
kaiser

프론트 엔드 용. 기본적으로 특정 단일 사용자 정의 게시물 유형이 표시 될 때만 트리거하기를 원합니다.
Poulomi Nag

답변:


24

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

참조 : wpcodex.wordpress.orgwpdeveloper.wordpress.org


'wp'후크가 언제 실행되는지 알려주시겠습니까?
Poulomi Nag

A) after_setup_theme및 이전에 실행 setup_theme되므로 WP :: main()wp-settings.php 내에서 호출되는 플러그인 B) inside에만 액세스 할 수 있습니다 .
kaiser

1
@kaiser하지 않습니다는 wp후크 애프터 화재 after_setup_theme후크와 직전 template_redirect때문에 만들기 wp테마뿐만 아니라 플러그인 액세스? (그냥 명확히하기 위해?)
Adam

13

template_redirect템플리트를 렌더링하기 전에 실행되는 조치 후크를 사용하십시오 .

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

@PoulomiNag 문제 없습니다, 위의 답변을 찾았습니다. 비록 하나의 작은 메모는 후크 wp후에 실행 after_theme_setup되므로 플러그인으로 액세스 할 수있을뿐만 아니라 테마에서 안전하게 사용할 수 있다고 생각합니다.
Adam

나는 방금 확인했다. wp이후에 실행됩니다 after_theme_setup. 그러나 플러그인에 필요합니다. 그래서 wp뿐만 아니라 template_redirect나를 위해 모두 잘 작동. 여기에 두 가지 대답을 받아들이 길 바랍니다! :)
Poulomi Nag

괜찮습니다. 두 가지를 모두 받아 들일 필요는 없으며, 발사 순서를 명확히하고 싶었습니다. 내가 미치게하지 않도록 플러그인과 함께 행운을 빌어 요 ...
Adam

1

나는 종종 사용자 정의 게시물이 아닌 페이지의 사용자 정의 메타 상자에로드하기 위해 다음을 사용했습니다.

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

            }
        }
    }

감사합니다 Darronz. 그러나 페이지를로드하는 동안 프런트 엔드에서 작동하려면 후크가 필요합니다. 어떤 아이디어?
Poulomi Nag

위의 내용 to add_action('init', // etc)을 변경 하면 관리자 섹션이 아닌 페이지로드에서 작동합니다.
darronz

2
@darronz 그리고 후크가 양쪽에서 작동 ! is_admin()하기 때문에 내부 를 확인해야합니다 init.
kaiser
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.