如何在管理员中获取当前的编辑页面ID?


11

我发现的大多数解决方案都用于前端。这是用于插件的,因此所有活动都在后端。

如何获取管理员当前正在使用(编辑)的页面ID?

注意我不在循环中。我只需要获取后端当前正在查看的页面ID(而不是帖子)即可。


您可以从URLwp-admin/post.php?post=14&action=edit
Bindiya Patoliya 2013年

4
我将URL作为最后一击。我希望有更优雅的方法可以做到这一点。
丹尼尔(Daniel)

Answers:


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;为了什么?
2016年

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

?>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.