Intereting Posts
Как найти код, выполняемый при вызове wp_head ()? pre_get_posts не влияет на архив моей категории wp_hash_password неожиданное поведение get_the_post_thumbnail ($ post-> ID, миниатюра); не работает. Как я могу это решить? Глубина пачки WordPress Многоузловое доменное отображение разбивает CSS сделать разбивку на страницы, показывающие записи по дате Короткий код для мест Использование функций WordPress на других сайтах Показать виджет Woocommerce minicart на боковой панели страницы проверки? И как сделать это обновление безопасным, переопределив виджет? Принуждение всех сообщений, связанных с типом персонализированного сообщения, Помогите сконденсировать / оптимизировать некоторый рабочий код Как только я добавляю пользовательский query_var с помощью фильтра, мои страницы указывают на страницу архива – почему? Как отобразить список, показывающий пользовательские типы сообщений, вложенные в таксономию? сверхпрозрачная всплывающая подсказка + строка запроса гравитации

Принудительный шаблон, основанный на URL-адресе

Когда пользователь просматривает URI, начинающийся с «/ forums», WordPress должен вызывать указанный шаблон. Например, все эти URL-адреса:

  • mysite.com/forums
  • mysite.com/forums/questions
  • mysite.com/forums/questions/1/my-question
  • mysite.com/forums/questions/ask
  • mysite.com/forums/users

… должен вызвать следующий шаблон: mytheme / page-forums.php

Я считаю, что это связано с WP_Rewrite , но я не знаю , что делать дальше.

Есть идеи?

Solutions Collecting From Web of "Принудительный шаблон, основанный на URL-адресе"

Я включил некоторый код, который я использую, когда мне нужно сделать дополнения к правилам перезаписи WordPress. Он вводит дополнительные правила в обычную логику перезаписи WordPress, поэтому вы можете направить WordPress на определенные файлы шаблонов на основе URL-адреса. Вы можете изменить его в соответствии с вашими потребностями, добавив дополнительные правила функции create_rewrite_rules () и дополнительные query_vars к функции add_query_vars ().

<?php // Forums Class // $ForumsCode = new Forums(); register_activation_hook( __file__, array($ForumsCode, 'activate') ); add_filter('rewrite_rules_array', array($ForumsCode, 'create_rewrite_rules')); add_filter('query_vars',array($ForumsCode, 'add_query_vars')); add_filter('admin_init', array($ForumsCode, 'flush_rewrite_rules')); add_filter('template_include', array($ForumsCode, 'template_redirect_intercept')); class Forums { function activate() { global $wp_rewrite; $this->flush_rewrite_rules(); } function create_rewrite_rules($rules) { global $wp_rewrite; $newRule = array('forums/(.+)' => 'index.php?forumdata='.$wp_rewrite->preg_index(1)); $newRule2 = array('forums/questions/(.+)' => 'index.php?questions=true&forumdata='.$wp_rewrite->preg_index(1)); $newRules = $newRule + $newRule2 + $rules; return $newRules; } function add_query_vars($qvars) { $qvars[] = 'forumdata'; return $qvars; } function flush_rewrite_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } function template_redirect_intercept($template) { global $wp_query; if ($wp_query->get('forumdata')) { $template = get_bloginfo('template_url') . '/page-forums.php'; } return $template; } function pushoutput($message) { $this->output($message); } function output( $output ) { header( 'Cache-Control: no-cache, must-revalidate' ); header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); echo json_encode( $output ); } }