Intereting Posts
Плагины, которые не отображаются в панели управления Multisite Как защитить часть моего кода от модификации TinyMCE при переключении с текстового на визуальный? AJAX fileupload – TypeError: не функция ajaxSubmit () Как отображать сообщения в админах по умолчанию? Сортировка списка подключений для раздела admin – WordPress Как иметь более одного идентификатора, включенных в команду exclude? чередующиеся классы по wp_list_pages flush_rewrite_rules ломает постоянные ссылки Пользовательский тип post_type_link типа «страница не найден» в любом другом настраиваемом типе сообщения Показать короткий текст Добавить пользователя meta с помощью переключателя во время регистрации remove_action условно для пользовательского типа сообщения Если мета-ключ существует в функции получения сообщений, иначе создайте его Могут ли изменения в пользовательской структуре WordPress постоянной ссылки влиять на старые URL-адреса? Поиск по значениям метаданных, показывающим несоответствующий результат

Программно заданный шаблон страницы на основе идентификатора страницы

Как установить шаблон страницы на основе идентификатора? У меня есть Redux Framework, установленный на моем сайте, и один из вариантов – установить страницу регистрации. На этой странице я хочу использовать определенный шаблон, но на других он должен использовать шаблоны по умолчанию.

У меня была половина работы с

add_filter( 'page_template', 'my_function' ); function my_function(){ global $my_options; $page_id = get_queried_object_id(); if ( $my_options['my-reg-page'] == $page_id ) { return get_template_directory() . '/reg-page.php'; } } 

в том, что страница, о которой идет речь (одна с идентификатором, хранящаяся в $my_options['my-reg-page'] ) имеет набор страниц, но на остальных страницах используется index.php как шаблон, а не их соответствующие страницы (один. php, page.php и т. д.). Если я установлю условие за пределами фильтра, он не отобразит шаблон, который я ищу. Я хочу избежать сохранения метаданных, так как я предпочел бы вставлять код в свой файл functions.php для использования в нескольких темах, которые будут использовать разные страницы в качестве необходимой страницы, где это необходимо. Я знаю, что самый простой способ сделать это – установить тему непосредственно на странице в области администрирования, но она создает несколько параметров. Я надеюсь уменьшить их как можно больше.

Любой совет? Возможно ли это?

Solutions Collecting From Web of "Программно заданный шаблон страницы на основе идентификатора страницы"

Мне нужно было сделать что-то очень похожее для одного из плагинов, которые я разрабатывал. Я зарегистрировал два отдельных cpt во время активации плагина, и каждый из этих cpt должен использовать отдельный шаблон, который я связал с базой кода плагина.

Вы должны быть в состоянии сделать то же самое для шаблонов страниц, используя фильтр page_template .

Вот моя функция, использующая фильтр single_template, который можно настроить вместо использования page_template. Вам просто нужно взять глобальную переменную $ post, чтобы вы могли проверить тип сообщения или идентификатор сообщения, а затем использовать шаблон на основе этих данных.

 add_filter( 'page_template', 'custom_page_template' ); public function custom_page_template( $page_template ) { global $post; switch ( $post->ID) { default : case '2' : // page ID 2 if( file_exists( get_stylesheet_directory() . '/single-event-template.php' ) ) { $page_template = get_stylesheet_directory() . '/single-event-template.php'; return $single_template; break; case '14' : // page ID 14 $page_template= plugin_dir_path( dirname( __FILE__ ) ) . 'public/partials/single-event-location-template.php'; return $page_template; break; } // end switch } 

Я не тестировал это, используя шаблоны страниц, но с кодовой страницы это похоже на то, что он должен работать.

Исходя из вашего примера, вы можете попробовать что-то похожее на следующее:

 add_filter( 'page_template', 'my_function' ); function my_function( $page_template ){ global $post; $page_id = $post->ID; if ( $my_options['my-reg-page'] == $page_id ) { $page_template = get_template_directory() . '/reg-page.php'; } else { $page_template = get_template_directory() . '/some-other-page-template.php'; } return $page_template; }