Изменение названия 'Default Template' (Шаблон по умолчанию)

12 апр. 2012 г., 16:06:05
Просмотры: 22.3K
Голосов: 5

Я работаю над сайтом клиента, и при добавлении новой страницы нужно выбирать шаблон; "Default Template" (Шаблон по умолчанию) не является подходящим вариантом.

Я хотел бы переименовать "Default Template" на что-то вроде "-- Выберите шаблон --".

При поиске в кодовой базе WordPress я обнаружил, что упоминания "Default Template" жестко прописаны в файлах wp-admin/includes/meta-boxes.php (строка 588) и wp-admin/includes/class-wp-posts-list-table.php (строка 882). Означает ли это, что в настоящее время нет способа изменить это без модификации core-кода (чего я хотел бы избежать)?

4
Комментарии

Можешь объяснить, почему "Шаблон по умолчанию" не является допустимым выбором?

Chip Bennett Chip Bennett
12 апр. 2012 г. 16:09:04

Потому что я использую Advanced Custom Fields, и в зависимости от выбранной темы появляется совершенно другой набор полей. Нет такого, который мы могли бы установить как "По умолчанию" и быть довольными.

Shaun Shaun
12 апр. 2012 г. 19:29:33

Но что-то должно быть по умолчанию. В WordPress статические Страницы обязаны иметь Шаблон и всегда будут возвращаться к page.php, а затем к index.php.

Chip Bennett Chip Bennett
12 апр. 2012 г. 21:15:38

Это можно сделать с помощью jQuery/JS, наверное, если вам действительно нужно это принудительно реализовать. Однако, естественно, пользователь может обойти ограничение, отключив JS или заблокировав файл скрипта, который принудительно требует выбора шаблона.

t31os t31os
13 апр. 2013 г. 22:18:12
Все ответы на вопрос 4
0

Начиная с версии 4.1 для этого существует фильтр; см. https://github.com/WordPress/WordPress/commit/7cdbac53e8497b346d1009375d36586fb6e5197c

Теперь вы можете использовать:

add_filter('default_page_template_title', function() {
    return __('Мое название шаблона по умолчанию', 'your_text_domain');
});
18 нояб. 2015 г. 14:30:00
1

Я согласен с ответом, который дал @TravisPflanz, но если вы хотите изменить только имя, предоставляемое ядром WordPress, вы можете использовать следующий фильтр.

function yourprefix_filter_gettext( $translation, $text, $domain ) {
    if ( $text == 'Default Template' ) {
        return __( 'Страница деталей', 'your-theme-or-plugin-textdomain' );
    }
    return $translation;
}
add_filter( 'gettext', 'yourprefix_filter_gettext', 10, 3 );    

Это заменяет стандартный перевод ядра на ваш собственный.

Пожалуйста, переименуйте yourprefix и your-theme-or-plugin-textdomain в соответствии с вашей конфигурацией

25 февр. 2014 г. 13:09:46
Комментарии

Некоторые заметки: строгие проверки (===) выполняются быстрее. И вам следует удалять действие после нахождения строки. Этот фильтр выполняется несколько тысяч раз во время каждого запроса и существенно влияет на производительность.

kaiser kaiser
25 февр. 2014 г. 13:43:44
2

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

Возможно, это слишком упрощённый ответ, но вам следует создать шаблон по умолчанию, который будет допустимым выбором, а затем предложить другие шаблоны в дополнение к "Шаблону по умолчанию". Просто сделайте шаблон по умолчанию максимально простым макетом страницы. Это также устранит путаницу для пользователя. Просто определите, какой макет страницы будет наиболее распространённым, и сделайте его "Шаблоном по умолчанию".

Как отмечает Чип ниже, "Шаблон по умолчанию" всегда существует, даже если вы просто попытаетесь изменить его название с помощью традиционных методов именования шаблонов. Если вы измените название шаблона page.php, вам просто будут предложены варианты "Шаблон по умолчанию" и "Новый и крутой шаблон страницы".

12 апр. 2012 г. 16:21:40
Комментарии

"Шаблон по умолчанию" всегда существует, как определено в Иерархии шаблонов WordPress для статических Страниц.

Chip Bennett Chip Bennett
12 апр. 2012 г. 17:08:54

Хорошо, спасибо. Как я уже отметил выше, нам действительно нужно, чтобы они выбрали тему, так как нет хорошего стиля, который мы могли бы автоматически установить как "По умолчанию" и быть довольными. Нам придется оставить все как есть и сказать им, чтобы они изменили "Тему по умолчанию" на любую другую.

Shaun Shaun
12 апр. 2012 г. 19:31:24
0

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

add_action( 'after_setup_theme'...

для настройки глобальной опции с помощью

update_option ('default_template','page-content.php');

Затем я использовал

function replace_page_attributes_metaboxes() {
    add_meta_box('post-parent', 'Атрибуты страницы', 'attributes_meta_box', 
             'page', 'side', 'high');
    remove_meta_box('pageparentdiv', 'page', 'side'); 
} 
add_action( 'admin_menu' , 'replace_page_attributes_metaboxes' );

чтобы удалить стандартный метабокс "Атрибуты страницы", который используется для определения шаблона страницы, и заменить его копией кода (см. http://wpseek.com/page_attributes_meta_box/). Я заменил часть кода, которая находит название шаблона страницы, на:

if ( ($post->post_type == 'page')  && (count( get_page_templates() ) != 0) ) {
    if (!empty($post->page_template))
        $template = $post->page_template;
    else
        $template =     get_option ('default_template');
}

если опция не найдена, $template устанавливается в false, что заставляет базовый код использовать стандартный шаблон по умолчанию.

13 апр. 2013 г. 22:03:09