Измените текст справки «Введите название здесь» для пользовательского типа сообщения

20

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

Джон Чендлер
источник
1
Для тех, кто смотрит на этот вопрос сейчас (начиная с WordPress 3.1), пожалуйста, посмотрите несколько новых ответов ниже для лучшего (более «решения WordPress Way»).
Том Ожер

Ответы:

21

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

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

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 'Enter Last Name, Followed by First Name';

    return $input;
}
Rarst
источник
4
Используйте фильтр enter_title_here
Pbearne
2
Хорошо, но смотрите новые ответы ниже.
Mark
35

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

add_filter( 'enter_title_here', 'custom_enter_title' );
function custom_enter_title( $input ) {
    if ( 'your_post_type' === get_post_type() ) {
        return __( 'Enter your name here', 'your_textdomain' );
    }

    return $input;
}

Измените your_post_typeи your_textdomainсопоставьте собственное имя типа сообщения и текстовый домен.

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

Извините, что выкопал этот вопрос из могилы, но есть лучшее решение, предоставленное начиная с WordPress 3.1. enter_title_hereФильтр.

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

    // For CPT 1
    if  ( 'custom_post_type_1' == $screen->post_type ) {
        $title = 'CPT1 New Title';

    // For CPT 2
    } elseif ( 'custom_post_type_2' == $screen->post_type ) {
        $title = 'CPT2 New Title';

    // For Yet Another CPT
    } elseif ( 'custom_post_type_3' == $screen->post_type ) {
        $title = 'CPT3 New Title';
    }
    // And, so on

    return $title;
}

add_filter( 'enter_title_here', 'change_default_title' );
Abhik
источник
2
Новые конструктивные ответы всегда приветствуются.
Питер Гусен
Это правильный (современный) ответ, однако ответ Мартина-Ала помнит об использовании функции-оболочки локализации gettext, поэтому его также следует тщательно изучить: wordpress.stackexchange.com/a/6819/3687
Том Аугер,
5

Взгляните 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', __( 'Enter title here' ), $post ); ?>
</label>
Martin-Al
источник
Чтобы было ясно, это новое в 3.1 .
Ян Фабри
2

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

Фуксия
источник