#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 /…