Я действительно не уверен, как / что спросить, но я стараюсь изо всех сил …
Могу ли я сказать, как WordPress (возможно, в файле index.php):
Если A Затем загрузите страницу Y своим шаблоном соответствия (который вы всегда так хорошо знаете, что это такое), и если B загружает страницу Y своим шаблоном соответствия (который …)?
Я имею в виду что-то вроде, может быть, установка первой страницы по моему состоянию … пусть WordPress затем задает запрос и правильный шаблон и все такое.
Другой способ сказать:
Я хочу сказать WordPress: вы знаете, что если бы я настраивал переднюю страницу (через настройки администратора -> панель чтения) на страницу под названием «page1», вы бы показывали ее на первой странице, обрабатывая данные страницы, шаблон и все необходимое для основной URL. теперь я хочу, чтобы вы делали то же самое, но если что-то происходит (скажем, пользователь вошел в систему или независимо от того, какое состояние и условие «если» выполняется) сделайте это с другой страницей под названием «страница13», и если произойдет другая вещь с другими страницами "page5" …
Я не уверен, что это отличный способ, но пока это то, что у меня есть:
Задайте настройку главной страницы в WordPress сообщениям, а не статической странице , поэтому WordPress будет использовать файл index.php
.
В файле index.php
напишите:
if (something) { global $post; $post = get_post( "the post id" ); setup_postdata( $post ); include('page-template-file.php'); } else { global $post; $post = get_post( "the other post id" ); setup_postdata( $post ); include('page-other-template-file.php'); }
вif (something) { global $post; $post = get_post( "the post id" ); setup_postdata( $post ); include('page-template-file.php'); } else { global $post; $post = get_post( "the other post id" ); setup_postdata( $post ); include('page-other-template-file.php'); }
вif (something) { global $post; $post = get_post( "the post id" ); setup_postdata( $post ); include('page-template-file.php'); } else { global $post; $post = get_post( "the other post id" ); setup_postdata( $post ); include('page-other-template-file.php'); }
Примечание: вам нужно иметь дело с другими страницами с шаблоном unique.php и так … иначе с помощью этого решения вы загружаете одну из этих страниц для любой страницы вашего сайта.
Чтобы переписать шаблон по умолчанию, вы можете использовать template_include
hook, который можно использовать следующим образом:
add_filter('template_include', 'my_custom_template'); function my_custom_template($original_template) { if ($something) { return include_wordpress_template(get_template_directory() . $my_custom_template); } else { return $original_template; } }
Здесь вы можете найти дополнительную информацию о крючке.
ОБНОВИТЬ
Чтобы изменить полученные данные, вы можете изменить запрос, используя для pre_get_posts
крюк pre_get_posts
следующим образом:
function my_pre_get_posts($query) { global $post; if ($query->is_main_query() && $your_condition) { $query->set( 'post_type', 'your_post_type' ); $query->set( 'p', $some_special_id ); } else { return $query; } } add_action( 'pre_get_posts', 'my_pre_get_posts' );