Я создал очень простой плагин WordPress, который создает динамическую c страницу. Я основывался на рекомендациях / ответах на аналогичные вопросы, заданные ранее. При работе в WP5 все работает, как и ожидалось, но не в WP4.
add_filter('the_posts',array($this,'createDynamicPage'));
...
public function createDynamicPage($posts) {
global $wp,$wp_query;
$page_slug = "testpage";
$page_id = -34343343;
if ((!$this->postExists($posts)) && ((strtolower($wp->request) == $page_slug)) || ($wp->query_vars['page_id'] == $page_slug)) {
$post = new stdClass;
$post->post_author = 1;
$post->post_name = $page_slug;
$post->guid = get_bloginfo('wpurl' . '/' . $page_slug);
$post->post_type = 'page';
$post->post_title = $this->args['post_title'];
$post->post_content = $this->args['post_content'];
$post->ID = $page_id;
....
....
unset($wp_query->query["error"]);
$wp_query->query_vars["error"]="";
$wp_query->is_404 = false;
}
return $posts;
}
В моей установке WP5 условие IF в коде успешно выполняется, когда я попадаю на страницу URL / тестовую страницу. Тем не менее, в моей установке WP4, это никогда не проходит. При просмотре переменных $ wp и $ wp_query они всегда содержат нуль для запроса $ wp-> или $ wp-> query_vars при переходе по URL-адресу / testpage.
Я просмотрел все содержимое объектов $ wp и $ wp_query при достижении этой точки в коде, и, похоже, ничего не задано (должны быть нулевые или пустые значения), которые позволили бы мне условно проверить, запрашивается ли соответствующая страница.
Есть ли что-то другое, что мне нужно сделать в WP4, чтобы все работало так же, как в WP5?
Спасибо, Jab