Wordpress - Скрытие или удаление шаблонов родительской темы - PullRequest
1 голос
/ 23 февраля 2012

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

Есть ли способ отменить регистрацию?их из дочерних тем функции или плагин?Я знаю, что мог бы просто пойти и удалить их из родительского, но это не доказательство обновления / обновления.

Любая помощь приветствуется, спасибо!

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

ОБНОВЛЕНИЕ 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].

1 голос
/ 23 февраля 2012

Просто добавьте пустые шаблоны с одинаковым именем и заголовком шаблона в свою дочернюю тему.Затем добавьте свои собственные шаблоны из этого шаблона в locate_template();.

0 голосов
/ 31 марта 2014

Я нашел тот же вопрос с большим количеством ответов: https://wordpress.stackexchange.com/questions/13671/how-to-remove-a-parent-theme-page-template-from-a-child-theme

Обратите внимание, что некоторые ответы не работают для более поздних версий WordPress (например, 3.8). WordPress 3.9 может иметь ловушку, которая позволит разработчику просто исключать или переименовывать шаблоны в списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...