관리자의 post.php에있을 때 현재 게시물 유형을 어떻게 알 수 있습니까?


11

사용자가 게시물 유형이 "event"인 게시물 (post.php)을 편집하는 경우에만 admin_init 후크로 무언가를 시도하고 있습니다. 내 문제는 워드 프레스가 전역 변수 호출 $ post_type을 가리 키더라도 문제입니다. 만약 내가한다면:

global $post_type;
var_dump($post_type);

NULL을 반환합니다.

그러나 내가 이것을하면 :

global $pagenow;
var_dump($pagenow);

내 현재 페이지를 반환합니다. "post.php".

이 함수를 살펴 보았지만 $screen = get_current_screen();admin_init 후크가 실행될 때까지 늦게 선언되지 않았습니다.

그래서 내 질문은 admin_init가 실행될 때 편집중인 현재 게시물이 어떤 게시물 유형인지 확인하는 방법입니다. URL이 post.php?post=81&action=edit그렇다면 postid = 81의 게시물 유형이 무엇인지 어떻게 알 수 있습니까?

감사합니다 Malthe


무엇에 대해 global $post?
Sisir

글로벌 포스트는 아직 admin_init 훅에서 사용할 수 없습니다
Malibur

답변:


21
add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
    // Global object containing current admin page
    global $pagenow;

    // If current page is post.php and post isset than query for its post type 
    // if the post type is 'event' do something
    if ( 'post.php' === $pagenow && isset($_GET['post']) && 'post' === get_post_type( $_GET['post'] ) )
        // Do something
    }
}

기존 게시물을 편집 할 때 URL은 '/wp-admin/post.php?post=81&action=edit'입니다.
Malibur

이제 수정되었습니다 ... 그렇게하기 위해 db를 쿼리해야하지만 ...
MiCc83

1
코드의 기능에 대한 설명을 추가하십시오
Pieter Goosen

2018 년에도 매우 유용한 답변입니다!
LoicTheAztec

코드 전용 답변은별로 유용하지 않습니다. 참조 @PieterGoosen의 commment, 위 .... 5 년 전 ~에서
random_user_name

0

MiCc83의 답변을 확장하겠습니다. OP의 원래 질문을 따르지 않는 몇 가지 사항이 있지만 전반적으로 훌륭한 솔루션입니다. 예를 들어, 응답에서 post_type을 'post'로 확인하고 있기 때문에 post_type 이벤트에서는 작동하지 않습니다.

add_action( 'admin_init', 'do_something_152677' );
function do_something_152677 () {
    // Global object containing current admin page
    global $pagenow;

    // If current page is post.php and post isset than query for its post type 
    if ( 'post.php' === $pagenow && isset($_GET['post']) ){
        $post_id = $_GET['post'];

        // Do something with $post_id. For example, you can get the full post object:
        $post = get_post($post_id);

    }
}

'post' === get_post_type( $_GET['post'] )이전 답변 의 조건 으로 인해 게시물 유형 '이벤트'에서 작동하지 않을 수 있습니다. 'post'대신 'event'게시물 유형을 확인해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.