ฉันจะรับ ID หน้าแก้ไขปัจจุบันในผู้ดูแลระบบได้อย่างไร


11

โซลูชันส่วนใหญ่ที่ฉันพบมีไว้สำหรับการใช้งานส่วนหน้า สิ่งนี้มีไว้สำหรับปลั๊กอินดังนั้นกิจกรรมทั้งหมดจึงอยู่ในส่วนท้าย

ฉันจะรับรหัสเพจที่กำลังใช้งานอยู่ (แก้ไข) ในผู้ดูแลระบบได้อย่างไร

หมายเหตุฉันออกจากห่วง ฉันแค่ต้องการรับ ID ของหน้า (ไม่ใช่โพสต์) ที่ฉันเห็นอยู่ในส่วนหลัง


คุณสามารถรับได้จาก URLwp-admin/post.php?post=14&action=edit
Bindiya Patoliya

4
ฉันเห็น URL เป็นนัดสุดท้าย ฉันหวังว่าจะมีวิธีที่สง่างามกว่าในการทำเช่นนั้น
Daniel

คำตอบ:


20

คุณยังสามารถใช้

$post_id = $_GET['post'];

หรือคุณสามารถใช้ตะขอ (น่าจะดีกว่า)

function id_WPSE_114111() {
    global $post;
    $id = $post->ID;
    // do something
}

add_action( 'admin_notices', 'id_WPSE_114111' );

คุณจะต้องเพิ่มเงื่อนไขเนื่องจากจะทำงานในหน้าผู้ดูแลระบบทั้งหมดฉันแนะนำให้ใช้ get_current_screen();

ยกตัวอย่างเช่นในการทำงานเฉพาะบนหน้า :

function id_WPSE_114111() {

    global $my_admin_page;
    $screen = get_current_screen();

    if ( is_admin() && ($screen->id == 'page') ) {
        global $post;
        $id = $post->ID;
        var_dump($id);
    }
}

add_action( 'admin_notices', 'id_WPSE_114111' );

ฉันต้องการหน้า
Daniel

สิ่งนี้ใช้ได้กับหน้าเว็บด้วย
Wyck

2
สิ่งที่เป็นglobal $my_admin_page;อยู่หรือ?
Omer

2

คุณสามารถเพิ่มรหัสนี้ในไฟล์ functions.php และมันจะให้เมตาบ็อกซ์ด้านบนของกล่องการตั้งค่าการเผยแพร่เมื่อทำการแก้ไขโพสต์หรือหน้า

 <?php

function cf_post_id() {
    global $post;

   // Get the data
   $id = $post->ID;

   // Echo out the field
   echo '<input type="text" name="_id" value="' . $id . '" class="widefat" disabled />';
  }

 function ve_custom_meta_boxes() {
    add_meta_box('projects_refid', 'Post ID', 'cf_post_id', 'post', 'side', 'high');
    add_meta_box('projects_refid', 'Page ID', 'cf_post_id', 'page', 'side', 'high');
   }
   add_action('add_meta_boxes', 've_custom_meta_boxes');

?>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.