ОБНОВЛЕНИЕ 2019-06-10 : На момент написания этого ответа не было никакого хорошего способа сделать это, но с тех пор theme_page_templates
и * Добавлено 1007 * крючков, что делает это возможным. Со страницы theme_page_templates
документов:
Фильтр шаблонов страниц по идентификатору блога
Предположим, у вас есть блог Food
с идентификатором 2 и шаблоном page-food.php
, который следует использовать только для этого блога. В приведенном ниже примере шаблон страницы удаляется из выпадающих списков других блогов:
/**
* Filter the theme page templates.
*
* @param array $page_templates Page templates.
* @param WP_Theme $this WP_Theme instance.
* @param WP_Post $post The post being edited, provided for context, or null.
* @return array (Maybe) modified page templates array.
*/
function wpdocs_filter_theme_page_templates( $page_templates, $this, $post ) {
$current_blog_id = get_current_blog_id();
$food_blog_id = 2;
if ( $current_blog_id != $food_blog_id ) {
if ( isset( $page_templates['page-food.php'] ) ) {
unset( $page_templates['page-food.php'] );
}
}
return $page_templates;
}
add_filter( 'theme_page_templates', 'wpdocs_filter_theme_page_templates', 20, 3 );>
ПРЕДЫДУЩИЙ ОТВЕТ:
Нет доступных фильтров в get_themes()
, где WordPress находит файлы шаблонов из темы и родительской темы, если они используются. Также нет доступных фильтров для get_page_templates()
или page_template_dropdown()
. Я бы сказал, что ваш лучший вариант - каким-то образом удалить или скрыть элементы опций в панели администратора, не позволяя пользователю выбирать их.
Подцепите действие admin_head
и введите javascript или css для обработки #page_template option[val=template-filename.php]
.