WordPress 관리자에서 새 페이지 / 게시물 / CPT를 추가하는지 또는 편집 페이지 / 게시물 / CPT를 추가하는지 확인하는 방법은 무엇입니까?


18

이것은 간단한 것 같지만 현재 화면이 Add New 또는 Edit (일종의 워드 프레스 관리자 조건부 태그) 인지 여부를 결정하는 방법이 필요합니다 . 이를 위해 이미 내장 된 기능이 있습니까, 아니면 ... 어떻게 수행 할 수 있을지 아십니까?

답변:


29

여기 내가 가진 기능이 있습니다.

/**
 * is_edit_page 
 * function to check if the current page is a post edit page
 * 
 * @author Ohad Raz <admin@bainternet.info>
 * 
 * @param  string  $new_edit what page to check for accepts new - new post page ,edit - edit post page, null for either
 * @return boolean
 */
function is_edit_page($new_edit = null){
    global $pagenow;
    //make sure we are on the backend
    if (!is_admin()) return false;


    if($new_edit == "edit")
        return in_array( $pagenow, array( 'post.php',  ) );
    elseif($new_edit == "new") //check for new post page
        return in_array( $pagenow, array( 'post-new.php' ) );
    else //check for either new or edit
        return in_array( $pagenow, array( 'post.php', 'post-new.php' ) );
}

사용법 은 다른 조건부 태그와 마찬가지로 간단하지만 몇 가지 예가 있습니다.

새 페이지 또는 편집 페이지를 확인하십시오.

if (is_edit_page()){
   //yes its an edit/new post page
}

새 게시물 페이지를 확인하십시오.

if (is_edit_page('new')){
   //yes its an new post page
}

게시물 페이지 수정 확인 :

if (is_edit_page('edit')){
   //yes its an new post page
}

이 글을 $typenow전역 글 과 결합 하여 특정 글 유형 편집 페이지를 확인하십시오.

global $typenow;
if (is_edit_page('edit') && "Post_Type_Name" == $typenow){
   //yes its an edit page  of a custom post type named Post_Type_Name
}

12
고마워 또 다른 글로벌 변수 $ current_screen을 찾았습니다. 글로벌 $ current_screen; if ($ current_screen-> post_type == 'CPT'&& $ current_screen-> action == 'add') {// 작업}
Dipesh KC

1
+1 유일한 관리자 조건은 is_admin;)라고 생각했습니다 . 더 있습니까?
카이저

0

get_current_screen()훨씬 간단하기 때문에 선호합니다 .

$screen = get_current_screen();
  if ($screen->base == "post") {
}

이 함수는 다른 데이터 포인트 중에서 화면의 ID, 기본, 게시물 유형 및 분류를 포함하는 객체를 반환합니다.

( 코덱스 )


0

나는 싶었 enqueue scriptstyles특정에 new/edit게시 유형 화면. edit/new-post주어진 화면에 내가 있는지 확인하는 기능을 만들었습니다 CPT.

/**
 * Check if 'edit' or 'new-post' screen of a 
 * given post type is opened
 * 
 * @param null $post_type name of post type to compare
 *
 * @return bool true or false
 */
function is_edit_or_new_cpt( $post_type = null ) {
    global $pagenow;

    /**
     * return false if not on admin page or
     * post type to compare is null
     */
    if ( ! is_admin() || $post_type === null ) {
        return FALSE;
    }

    /**
     * if edit screen of a post type is active
     */
    if ( $pagenow === 'post.php' ) {
        // get post id, in case of view all cpt post id will be -1
        $post_id = isset( $_GET[ 'post' ] ) ? $_GET[ 'post' ] : - 1;

        // if no post id then return false
        if ( $post_id === - 1 ) {
            return FALSE;
        }

        // get post type from post id
        $get_post_type = get_post_type( $post_id );

        // if post type is compared return true else false
        if ( $post_type === $get_post_type ) {
            return TRUE;
        } else {
            return FALSE;
        }
    } elseif ( $pagenow === 'post-new.php' ) { // is new-post screen of a post type is active
        // get post type from $_GET array
        $get_post_type = isset( $_GET[ 'post_type' ] ) ? $_GET[ 'post_type' ] : '';
        // if post type matches return true else false.
        if ( $post_type === $get_post_type ) {
            return TRUE;
        } else {
            return FALSE;
        }
    } else {
        // return false if on any other page.
        return FALSE;
    }
}

이 기능을 사용하려면 게시물 유형 이름을 전달하십시오.

/**
 * return true if 'edit' or 'new-post' screen of 'cpt_name' is opened
 */
if ( is_edit_or_new_cpt('cpt_name') ) {
    // do something
}

0

이 기능이 있습니다

if(!function_exists('is_post_edit_page')){
    function is_post_edit_page() {
        static $result = null;
        if ( $result === null ) {
            $result = false;
            if ( is_admin() ) {
                if (
                    empty( $_POST )
                    &&
                    isset( $_GET['action'] )
                    &&
                    $_GET['action'] === 'edit'
                    &&
                    isset( $_GET['post'] )
                ) {
                    // Display Edit Post page
                    $result = true;
                } elseif (
                    isset( $_POST['action'] )
                    &&
                    $_POST['action'] === 'editpost'
                    &&
                    isset( $_POST['post_type'] )
                    &&
                    isset( $_POST['post_ID'] )
                    &&
                    strpos( wp_get_referer(), 'action=edit' ) !== false
                ) {
                    // Submit Edit Post page
                    $result = true;
                }
            }
        }

        return $result;
    }
}

편집 페이지에서는 true를, 다른 페이지에서는 false를 반환합니다.

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