Zmień tekst pomocy „Wprowadź tytuł tutaj” na niestandardowym typie posta

20

Mam niestandardowy typ postu utworzony dla katalogu, który ostatecznie zostanie posortowany alfabetycznie. Będę sortować posty w kolejności alfabetycznej według tytułów, więc chcę się upewnić, że Tytuł jest wprowadzony jako nazwisko / imię. Czy istnieje sposób na zmianę domyślnego tekstu pomocy - „Wpisz tytuł tutaj” w moim niestandardowym poście na coś innego?

John Chandler
źródło
1
Dla osób, które teraz patrzą na to pytanie (od WordPress 3.1), zapoznaj się z niektórymi nowszymi odpowiedziami poniżej, aby uzyskać lepsze (więcej rozwiązania „WordPress Way”).
Tom Auger,

Odpowiedzi:

21

Nie ma sposobu, aby jawnie dostosować ten ciąg. Ale jest przekazywany przez funkcję tłumaczenia, więc jest łatwy do filtrowania.

Wypróbuj coś takiego (nie zapomnij zmienić na typ postu):

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
źródło
4
Użyj filtra enter_title_here
Pbearne
2
Dobrze, ale zobacz nowe odpowiedzi poniżej.
Mark
35

Wiem, że jestem trochę spóźniony na imprezę tutaj, ale chciałbym dodać, że enter_title_herefiltr został dodany specjalnie w tym celu w 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;
}

Zmień your_post_typei your_textdomaindopasuj własną nazwę typu posta i domenę tekstową.

Dave Romsey
źródło
5
Małe wyjaśnienie. Nie powinno być potrzeby sprawdzania is_admin (), ponieważ sam filtr będzie uruchamiany tylko w obszarze administracyjnym. Jeśli z jakiegoś powodu masz formularz front-end, bardzo możliwe, że i tak chcesz zastosować ten filtr.
Philip Downer
7

Przykro mi, że wykopałem to pytanie z grobu, ale istnieje lepsze rozwiązanie od WordPress 3.1. enter_title_hereFiltr.

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
źródło
2
Nowe konstruktywne odpowiedzi są zawsze mile widziane.
Pieter Goosen
To jest poprawna (nowoczesna) odpowiedź, jednak odpowiedź Martina-Al'a pamięta o użyciu funkcji pakowania lokalizacji gettext, dlatego też należy ją dokładnie przestudiować: wordpress.stackexchange.com/a/6819/3687
Tom Auger
5

Spójrz wp-admin/edit-form-advanced.phpna linię 246 (linia 329, od wersji 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
źródło
Dla jasności jest to nowość w wersji 3.1 .
Jan Fabry
2

Najlepszym sposobem na uzyskanie odpowiedniego formatu tytułu jest całkowite usunięcie tytułu i dodanie dwóch niestandardowych pól dla nazw części z odpowiednimi etykietami. Gdy post zostanie zapisany, utwórz tytuł według PHP.

fuxia
źródło