Как получить текущий идентификатор страницы редактирования в админке?


11

Большинство решений, которые я нашел, предназначены для фронтального использования. Это для плагина, так что все действия в бэк-энде.

Как получить идентификатор страницы, которая в данный момент используется (редактируется) в админке?

Обратите внимание, я не в курсе. Мне просто нужно получить идентификатор страницы (а не постов), которую я сейчас вижу в серверной части.


Вы можете получить его по URLwp-admin/post.php?post=14&action=edit
Bindiya Patoliya

4
Я вижу URL как последний выстрел. Я надеюсь, что есть более элегантный способ сделать это.
Даниил

Ответы:


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

Мне нужно для страниц.
Даниил

Это также работает для страниц.
Вик

2
для чего global $my_admin_page;?
Омер

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

?>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.