Мне нужно иметь возможность создавать поддельные/виртуальные/динамические страницы на основе URL-адреса, например http://www.mycinema.com/wpcinema/movie/MOVIEID, чтобы иметь возможность отображать фильмы для кинотеатров с информацией о фильме и информацией о живом сеансе.
Проведя много часов исследований, похоже, что не много написано о том, как делать виртуальные страницы в WordPress, поэтому я буду писать свой опыт после того, как это разрешится!
До сих пор текущий план состоял в том, чтобы использовать два фильтра - template_redirect для установки шаблона в текущий шаблон page.pp плагина и the_content для вставки содержимого. Идея состоит в том, чтобы использовать шаблон темы, чтобы тема страниц была хорошо с сайтом.
(Я получил этот подход от эту отличную страницу 2012 года от Xavi Esteve).
У меня две проблемы:
-
Какой лучший, самый пуленепробиваемый способ сделать это? Я использую неправильный подход? Я думал, что использование текущего шаблона темы, скорее всего, обеспечит наилучшее соответствие стилю сайта.
-
TwentyTwelve, похоже, не вызывает фильтр the_content в контексте, который я использую. Я подозреваю, что делаю что-то неправильно, но не могу найти проблему. Это, вероятно, тесно связано с вопросом 1. TwentyTwelve определенно вызывает the_content для нормальной страницы, и даже ранний add_filter() не запускается в моем коде.
Я обнаружил get_template_part() вчера и задался вопросом, следует ли мне использовать это вместо ручного поиска в дочерней папке, тогда родительский и запущенный include include.
Я бы не стал спрашивать, но я нахожусь в своем остроумие, широко использую googled, возможно, для неправильных условий поиска.
Я рассматривал пользовательские типы сообщений, но вокруг него есть различные сложности (включая контент, который может меняться каждые несколько минут), что означает, что динамически сгенерированная страница работает намного лучше.
Это отрывок из кода, который я написал для дальнейшего объяснения проблемы:
add_action('parse_request', array(&$this, 'vm_parse_request'));
function vm_parse_request( &$wp )
{
global $wp;
if (empty($wp->query_vars['pagename']))
return; // page isn't permalink
$p = $wp->query_vars['pagename'];
if (! preg_match("#wp-cinema/movie/([^/]+)#", $p, $m))
return;
// setup hooks and filters to generate virtual movie page
add_action('template_redirect', array(&$this, 'vm_template_redir'));
add_filter('the_content', array(&$this, 'vm_the_content'));
}
function vm_template_redir()
{
// Reset currrently set 404 flag as this is a plugin-generated page
global $wp_query;
$wp_query->is_404 = false;
$template = 'page.php';
include(STYLESHEETPATH."/page.php"); // child
// parent case left out for brevity
exit;
}
function vm_the_content($content)
{
return "my new content (actually generated dynamically)";
}
Это будет все более распространенная вещь в WordPress - может ли кто-нибудь предлагать предложения или помочь? Все очень ценится.