Как изменить текст "Введите заголовок" для пользовательского типа записи

12 янв. 2011 г., 20:10:38
Просмотры: 19.5K
Голосов: 24

У меня есть пользовательский тип записи для каталога, который будет сортироваться по алфавиту. Я буду сортировать записи по алфавиту по заголовку, поэтому хочу убедиться, что заголовок вводится в формате "Фамилия Имя". Можно ли изменить стандартный текст подсказки — "Введите заголовок" — в моем кастомном типе записи на что-то другое?

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

Для тех, кто сейчас смотрит этот вопрос (начиная с WordPress 3.1), пожалуйста, ознакомьтесь с более новыми ответами ниже, чтобы найти лучшее (более "WordPress-совместимое") решение.

Tom Auger Tom Auger
6 дек. 2016 г. 19:02:34
Все ответы на вопрос 5
1
44

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

add_filter( 'enter_title_here', 'custom_enter_title' );
function custom_enter_title( $input ) {
    if ( 'your_post_type' === get_post_type() ) {
        return __( 'Введите ваше имя здесь', 'your_textdomain' );
    }

    return $input;
}

Замените your_post_type и your_textdomain на название вашего типа записи и текстовый домен соответственно.

25 мар. 2011 г. 04:40:18
Комментарии

Небольшое уточнение. Проверка is_admin() не нужна, так как этот фильтр срабатывает только в административной части. Если по какой-то причине у вас есть форма на фронтенде, вполне возможно, что вы захотите применить этот фильтр и там.

Philip Downer Philip Downer
10 февр. 2013 г. 00:30:35
2
23

Невозможно явно настроить эту строку. Однако она передается через функцию перевода, поэтому ее легко отфильтровать.

Попробуйте что-то вроде этого (не забудьте изменить на свой тип записи):

add_filter('gettext','custom_enter_title');

function custom_enter_title( $input ) {

    global $post_type;

    if( is_admin() && 'Enter title here' == $input && 'your_post_type' == $post_type )
        return 'Введите фамилию, затем имя';

    return $input;
}
12 янв. 2011 г. 20:19:31
Комментарии

Используйте фильтр enter_title_here

Pbearne Pbearne
18 янв. 2016 г. 22:27:43

Хорошо, но смотрите новые ответы ниже.

Mark Mark
27 окт. 2016 г. 00:23:09
2

Извините, что поднимаю этот вопрос снова, но начиная с WordPress 3.1 доступно лучшее решение — фильтр enter_title_here.

function change_default_title( $title ){
    $screen = get_current_screen();

    // Для пользовательского типа записи 1
    if  ( 'custom_post_type_1' == $screen->post_type ) {
        $title = 'Новый заголовок для CPT1';

    // Для пользовательского типа записи 2
    } elseif ( 'custom_post_type_2' == $screen->post_type ) {
        $title = 'Новый заголовок для CPT2';

    // Для еще одного пользовательского типа записи
    } elseif ( 'custom_post_type_3' == $screen->post_type ) {
        $title = 'Новый заголовок для CPT3';
    }
    // И так далее...

    return $title;
}

add_filter( 'enter_title_here', 'change_default_title' );
23 мая 2014 г. 10:32:40
Комментарии

Новые конструктивные ответы всегда приветствуются.

Pieter Goosen Pieter Goosen
23 мая 2014 г. 10:37:44

Это правильный (современный) ответ, однако в ответе Martin-Al не забыто использовать функцию обёртки gettext для локализации, поэтому его также стоит внимательно изучить: http://wordpress.stackexchange.com/a/6819/3687

Tom Auger Tom Auger
6 дек. 2016 г. 18:55:12
1

Посмотрите в файле wp-admin/edit-form-advanced.php на строку 246 (строка 329, начиная с WP3.5)

<label class="screen-reader-text" id="title-prompt-text" for="title">
<?php echo apply_filters( 'enter_title_here', __( 'Введите заголовок' ), $post ); ?>
</label>
12 янв. 2011 г. 20:14:17
Комментарии

Для ясности, это новое в версии 3.1.

Jan Fabry Jan Fabry
18 февр. 2011 г. 16:26:58
0

Лучший способ получить желаемый формат заголовка — полностью удалить его и добавить два пользовательских поля для частей имени с соответствующими метками. При сохранении записи создавайте заголовок с помощью PHP.

13 янв. 2011 г. 00:20:40