WordPress $_GET[‘post’] в admin возвращает NULL

#php #wordpress #get

#php #wordpress #получить

Вопрос:

Я хочу изменить пользовательское поле на моей странице редактирования записи WordPress, и для этого мне понадобится идентификатор записи. У меня есть функция в functions.php и это отлично работает, когда я вручную ввожу идентификатор записи. Проблема возникает, когда я пытаюсь получить идентификатор записи из URL, но $ _GET [‘post’] оказывается бесполезным. var_dump($_GET['post']) returns NULL , $global $post; var_dump($post->ID) returns NULL . URL — это обычная ссылка для редактирования записи

URL:http://mywebsite.com/wp-admin/post.php?post=435amp;action=edit

Я смог получить идентификатор записи через хук admin_head, но не могу заставить его работать в моей другой функции, подающей в суд на set_query_var(). Посмотрите ниже на мой измененный код:

 add_action( 'admin_head', 'get_post_ID' );
function get_post_ID() {
global $post;
$thePostID = 0;
$pagenow = isset($GLOBALS['pagenow']) ? $GLOBALS['pagenow'] : null;
if ( $pagenow == 'post.php' ) {
    $thePostID = $post->ID;
    set_query_var('my_post_id', $thePostID);
}
return $post->ID;
}

function get_admin_post_ID() {
    var_dump(get_query_var('my_post_id'));
}
add_action( 'template_redirect', 'get_admin_post_ID' );
  

В чем может быть проблема здесь? Есть ли что-то, чего мне не хватает? Пожалуйста, помогите.

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

1. Вы видите ?post=xxx в URL, когда это не работает? Вы пробовали использовать перехваты / действия для получения данных и манипулирования ими? На данный момент вопрос немного неясен.

2. Это помогло бы увидеть пример URL того, что вы видите. Пожалуйста, добавьте это в свой вопрос.

3. @MuhammadTashfeen Я отредактировал вопрос, чтобы добавить ссылку

4. @MagnusEriksson Я поместил код в фильтр

5. Пожалуйста, покажите нам весь соответствующий код и полный URL, к которому вы обращаетесь.

Ответ №1:

Итак, что возвращает $_GET вместо этого? Вы используете какой-то плагин, который редактирует сообщения, и который не использует / передает этот параметр? Как было сказано ранее, URL-адрес браузера возвращает что-то вроде этого или нет? https://subdomain.w3host.com/wordpress/wp-admin/post.php?post=100amp;action=edit

PS: var_dump, которые возвращают NULL в $_GET[‘post’], просто означают, что существует так, уведомление php: Неопределенный индекс: post var не существует

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

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

2. действительно странно: если я помещу это в любой плагин, поверх любой инструкции, var_dump $_GET[‘post’] вернет мне правильно: строка (3) «110» . Единственной причиной вашей проблемы должно быть то, что где-то ранее в коде срабатывало что-то вроде этого: unset($_GET[‘post’]); затем, когда вы пытаетесь его получить, результат не определен и возвращает значение null в var_dump

3. У меня нет другого кода, который касается $_GET. У меня возникла проблема на существующем сайте, и я создал новую установку без плагина, и результат тот же!

4. ОК, ооочень странно! Что произойдет, если вы откроете файл /wp-admin/post.php затем на самом верху файла, сразу после стартовой <?php tag, you put this? print_r($_GET[‘post’]);выход; … затем нажмите в -> Редактировать сообщение

5. Извините, что у меня нет правильного ответа на этот вопрос, кроме указанного выше: или unset ($ _GET) происходит прямо перед вашей функцией или вашим кодом, или мне кажется невозможным, чтобы вы получили неопределенный var. Может ли wordpress по какой-либо причине аннулировать $ _GET, и если сообщение, подлежащее редактированию, отображается, это не проблема, связанная с сервером (при условии, что возможно пустое $ _GET, которое может быть вызвано проблемой сервера, что я так не думаю): возможно, это могло бы помочь, если еще не замечено, особенно последний ответ? wordpress.stackexchange.com/questions/46108 /…