Intereting Posts
не видны дополнительные темы в панели управления Классы WordPress удаляются при использовании пользовательского ходока Добавление настраиваемых возможностей Таблица wp_posts: безопасное удаление неиспользуемых столбцов для сохранения хранилища баз данных Получить все сообщения из категорий Удалить разрывы строк в wp_list_categories ()? Не могу получить «тег» Страница для отображения только тегов $ wpdb-> вставка вставки двух строк в базу данных Как я могу использовать другой значок меню администратора по умолчанию для настраиваемого типа сообщений? Создание страниц с конкретными категориями блога Перечислить подстраницу подстраницы Получите ссылки Google+ и Twitter – плагин WordPress SEO Показать все сообщения для таксономического термина в нескольких пользовательских типах сообщений Есть ли способ отключить термин, а не удалить его? Лучше ли использовать фильтр для the_content в архивных страницах?

Создать пользовательский тип сообщения, использующий шаблон Page.php

Я создаю плагин, который регистрирует пользовательский тип сообщения, и я хочу, чтобы он отображался с использованием шаблона page.php темы, а не post.php. Я устанавливаю hierarchical флаг, когда регистрирую его, но шаблон post.php все еще вызывается.

Путь, путь вниз внутри wp-includes / post.php, где, как представляется, решить, какой шаблон использовать, – это код:

 if ( ! empty( $postarr['page_template'] ) && 'page' == $data['post_type'] ) { $post->page_template = $postarr['page_template']; $page_templates = wp_get_theme()->get_page_templates( $post ); ... 

что заставляет меня думать, что шаблон post используется, если post_type является 'page' .

Я не хочу определять собственный шаблон, потому что хочу работать с любой темой. Я просто хочу сказать WordPress, какой из шаблонов текущей темы использовать.

Есть крючок действия, называемый get_template_part_{$slug} который мог бы сделать трюк, но я не уверен, чего он ожидает, а документация для этого необычно пятнистая.

Solutions Collecting From Web of "Создать пользовательский тип сообщения, использующий шаблон Page.php"

Вы можете отфильтровать template_include а затем позволить WordPress искать шаблон страницы во всех допустимых шаблонах, таких как page.php , index.php и даже файлы из родительской темы.

 add_filter( 'template_include', function( $template ) { return is_singular( [ 'YOUR_POST_TYPE' ] ) ? get_page_template() : $template; }); 

Это точно. Вы должны иметь возможность использовать что-то вроде этого, заменив your_post_type :

 function get_custom_post_type_template($single_template) { global $post; if ($post->post_type == 'your_post_type') { $single_template = get_stylesheet_directory_uri() . '/page.php'; } return $single_template; } add_filter( 'single_template', 'get_custom_post_type_template' );