ดูเหมือนว่าจะเป็นสิ่งที่เรียบง่าย แต่ฉันต้องการวิธีการตรวจสอบว่าหน้าจอปัจจุบันมีไว้สำหรับเพิ่มใหม่หรือแก้ไข (ประเภทของแท็กตามเงื่อนไขของผู้ดูแลระบบ WordPress) มีฟังก์ชั่นในตัวสำหรับสิ่งนี้อยู่แล้วหรือ ... ความคิดใด ๆ ที่จะทำให้สำเร็จ?
ดูเหมือนว่าจะเป็นสิ่งที่เรียบง่าย แต่ฉันต้องการวิธีการตรวจสอบว่าหน้าจอปัจจุบันมีไว้สำหรับเพิ่มใหม่หรือแก้ไข (ประเภทของแท็กตามเงื่อนไขของผู้ดูแลระบบ WordPress) มีฟังก์ชั่นในตัวสำหรับสิ่งนี้อยู่แล้วหรือ ... ความคิดใด ๆ ที่จะทำให้สำเร็จ?
คำตอบ:
นี่คือฟังก์ชั่นที่ฉันมี:
/**
* 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
}
is_admin
) มีอะไรอีกบ้าง?
ฉันชอบget_current_screen()
เพราะมันง่ายกว่ามาก:
$screen = get_current_screen();
if ($screen->base == "post") {
}
ฟังก์ชันนี้ส่งคืนวัตถุที่มี ID, ฐาน, ประเภทการโพสต์และอนุกรมวิธานของหน้าจอระหว่างจุดข้อมูลอื่น ๆ
( Codex )
ฉันต้องการenqueue script
และstyles
เฉพาะหน้า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
}
ฉันมีฟังก์ชั่นนี้
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;
}
}
ซึ่งผลตอบแทนจริงในหน้าแก้ไขและเท็จในหน้าอื่น ๆ ...