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

14 сент. 2013 г., 07:49:46
Просмотры: 46.1K
Голосов: 14

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

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

Примечание Это вне цикла WordPress. Мне просто нужно получить ID страницы (не записи), которую я сейчас просматриваю в админ-панели.

2
Комментарии

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

Bindiya Patoliya Bindiya Patoliya
14 сент. 2013 г. 08:07:05

Я рассматриваю URL как последний вариант. Надеюсь, есть более элегантный способ сделать это.

Daniel Daniel
14 сент. 2013 г. 08:11:06
Все ответы на вопрос 4
3
27

Вы также можете использовать

$post_id = $_GET['post'];

Или вы можете использовать хук (вероятно, это лучше).

function id_WPSE_114111() {
    global $post;
    $id = $post->ID;
    // сделать что-то
}

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' );
14 сент. 2013 г. 08:19:10
Комментарии

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

Daniel Daniel
14 сент. 2013 г. 08:27:11

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

Wyck Wyck
14 сент. 2013 г. 08:34:45

для чего нужен global $my_admin_page;?

Omer Omer
8 дек. 2016 г. 19:26:06
0

Вы можете добавить этот код в файл functions.php, и он создаст метабокс над блоком настроек публикации при редактировании записи или страницы.

<?php

function cf_post_id() {
    global $post;

   // Получаем данные
   $id = $post->ID;

   // Выводим поле
   echo '<input type="text" name="_id" value="' . $id . '" class="widefat" disabled />';
  }

 function ve_custom_meta_boxes() {
    add_meta_box('projects_refid', 'ID записи', 'cf_post_id', 'post', 'side', 'high');
    add_meta_box('projects_refid', 'ID страницы', 'cf_post_id', 'page', 'side', 'high');
   }
   add_action('add_meta_boxes', 've_custom_meta_boxes');

?>
14 сент. 2013 г. 08:17:08
0

Это, вероятно, "наиболее безопасный" способ проверки текущей записи на странице редактирования (и добавления) записи в админке WordPress.

function wpse114111_get_current_post_id(): ?WP_Post {
    global $post;

        if (empty($post) && array_key_exists('post', $_GET)) {
            $post = get_post($_GET['post']);
        }

        // Опционально: получить пустой объект записи из типа записи
        if (empty($post) && array_key_exists('post_type', $_GET)) {
            $object = new stdClass();
            $object->post_type = $_GET['post_type'];
            return new WP_Post($object);
        }

        if (empty($post)) {
            return null;
        }

        return $post;
}
14 мая 2020 г. 18:11:43
0
-1

Просто используйте этот код в файле functions.php, он вернет ID текущей редактируемой страницы или записи

function get_the_current_page_id(){
$post_id = null;
if( isset( $_REQUEST['post']) || isset($_REQUEST['post_ID'] ) ){
    $post_id = empty( $_REQUEST['post_ID'] ) ? $_REQUEST['post'] : $_REQUEST['post_ID' ];
}
    
//print_r($post_id) Для проверки
//die();
}

//get_the_current_page_id() //Вызов функции
4 апр. 2022 г. 11:00:17