Intereting Posts
Как отправить сообщение? прикреплять PDF-файл к шаблону архивов? Могу ли я использовать pre_get_posts для добавления значений из двух разных мета-ключей? Как получить термины верхнего уровня в пользовательской таксономии? Проблемы с CSS в Google Chrome Можно ли разрешить пользователю редактировать категории сообщений и ничего больше? Почтовый архив для определенного формата сообщения Изменение следующего кода для отображения заголовка и содержимого страницы статических страниц? Сделать изображения отображаются в том же порядке, что и в медиа-браузере, используя «получить детей»? Как использовать фильтр? Перебирать все теги и выходные сообщения в алфавитном списке Должен ли я использовать стандартную функцию wp_mail () для темы премиум-класса? Нелиниированная постоянная ссылка на страницу pagenavi показывает много страниц, рассчитанных из всех сообщений на сайте с помощью query_posts Любой способ изменить фактическое имя файла из медиа-менеджера?

$ wp_query при попытке создать виртуальную страницу

Я пытаюсь создать виртуальную страницу для своего плагина, и при этом возникает проблема с перезагрузкой wp_query. Я использую класс https://gist.github.com/brianoz/9105004 для создания виртуальной страницы. Я могу заставить все работать нормально, но проблема возникает всякий раз, когда на странице есть еще один цикл, независимо от того, из виджета в боковой панели он вернет набор $ wp_query с виртуальной страницы. Класс виртуальной страницы занял страницу, и я не могу найти способ сделать так, чтобы любые другие запросы на странице работали. Благодарю.

Solutions Collecting From Web of "$ wp_query при попытке создать виртуальную страницу"

Я нашел это, и он работает. Большая разница в том, что он проверяет, является ли $ post count == 0 и создается виртуальная страница, которая затем позволит всем другим запросам функционировать нормально.

<?php /* Plugin Name: Virtual Page Plugin URI: http://davejesch.com Description: Create a virtual page with content Author: Dave Jesch Author URI: http://davejesch.com Version: 1.0 */ if (!class_exists('DJVirtualPage')) { class DJVirtualPage { private $slug = NULL; private $title = NULL; private $content = NULL; private $author = NULL; private $date = NULL; private $type = NULL; public function __construct($args) { if (!isset($args['slug'])) throw new Exception('No slug given for virtual page'); $this->slug = $args['slug']; $this->title = isset($args['title']) ? $args['title'] : ''; $this->content = isset($args['content']) ? $args['content'] : ''; $this->author = isset($args['author']) ? $args['author'] : 1; $this->date = isset($args['date']) ? $args['date'] : current_time('mysql'); $this->dategmt = isset($args['date']) ? $args['date'] : current_time('mysql', 1); $this->type = isset($args['type']) ? $args['type'] : 'page'; add_filter('the_posts', array(&$this, 'virtualPage')); } // filter to create virtual page content public function virtualPage($posts) { global $wp, $wp_query; if (count($posts) == 0 && (strcasecmp($wp->request, $this->slug) == 0 || $wp->query_vars['page_id'] == $this->slug)) { //create a fake post intance $post = new stdClass; // fill properties of $post with everything a page in the database would have $post->ID = -1; // use an illegal value for page ID $post->post_author = $this->author; // post author id $post->post_date = $this->date; // date of post $post->post_date_gmt = $this->dategmt; $post->post_content = $this->content; $post->post_title = $this->title; $post->post_excerpt = ''; $post->post_status = 'publish'; $post->comment_status = 'closed'; // mark as closed for comments, since page doesn't exist $post->ping_status = 'closed'; // mark as closed for pings, since page doesn't exist $post->post_password = ''; // no password $post->post_name = $this->slug; $post->to_ping = ''; $post->pinged = ''; $post->modified = $post->post_date; $post->modified_gmt = $post->post_date_gmt; $post->post_content_filtered = ''; $post->post_parent = 0; $post->guid = get_home_url('/' . $this->slug); $post->menu_order = 0; $post->post_tyle = $this->type; $post->post_mime_type = ''; $post->comment_count = 0; // set filter results $posts = array($post); // reset wp_query properties to simulate a found page $wp_query->is_page = TRUE; $wp_query->is_singular = TRUE; $wp_query->is_home = FALSE; $wp_query->is_archive = FALSE; $wp_query->is_category = FALSE; unset($wp_query->query['error']); $wp_query->query_vars['error'] = ''; $wp_query->is_404 = FALSE; } return ($posts); } } } function dj_create_virtual() { $url = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/'); if ($url == 'dave-virtual-page') { $args = array('slug' => 'dave-virtual-page', 'title' => 'Dave\'s Virtual Page', 'content' => "This can be generated content, or static content<br /> Whatever you put here will appear on your virtual page."); $pg = new DJVirtualPage($args); } } add_action('init', 'dj_create_virtual');