Ändern Sie den Hilfetext "Titel hier eingeben" für einen benutzerdefinierten Beitragstyp

20

Ich habe einen benutzerdefinierten Beitragstyp für ein Verzeichnis erstellt, das am Ende alphabetisch sortiert wird. Ich werde die Beiträge in alphabetischer Reihenfolge nach Titel sortieren, daher möchte ich sicherstellen, dass der Titel als Nachname / Vorname eingegeben wird. Gibt es eine Möglichkeit, diesen Standard-Hilfetext - "Titel hier eingeben" - in meinem benutzerdefinierten Beitrag zu ändern?

John Chandler
quelle
1
Für Leute, die sich diese Frage jetzt (seit WordPress 3.1) ansehen, sehen Sie sich bitte einige der neueren Antworten an, um eine bessere Lösung zu finden (mehr "WordPress Way").
Tom Auger

Antworten:

21

Es gibt keine Möglichkeit, diese Zeichenfolge explizit anzupassen. Es wird jedoch durch die Übersetzungsfunktion geleitet und ist daher leicht zu filtern.

Probieren Sie so etwas aus (vergessen Sie nicht, Ihren Beitragstyp zu ändern):

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
quelle
4
Verwenden Sie den Filter enter_title_here
Pbearne
2
Gut, aber siehe die neuen Antworten unten.
Mark
35

Ich weiß, dass ich ein bisschen zu spät zur Party komme, aber ich möchte hinzufügen, dass der enter_title_hereFilter speziell für diesen Zweck in WordPress v3.1 hinzugefügt wurde.

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;
}

Ändern Sie your_post_typeund your_textdomain, um Ihren eigenen Beitragstypnamen und Ihre eigene Textdomäne abzugleichen.

Dave Romsey
quelle
5
Kleine Klarstellung. Sollte die Überprüfung von is_admin () nicht erforderlich sein, da dieser Filter nur im Admin-Bereich ausgelöst wird. Wenn Sie aus irgendeinem Grund ein Front-End-Formular hatten, ist es sehr wahrscheinlich, dass Sie diesen Filter trotzdem anwenden möchten.
Philip Downer
7

Es tut uns leid, diese Frage aus dem Grab zu heben, aber seit WordPress 3.1 gibt es eine bessere Lösung. Der enter_title_hereFilter.

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
quelle
2
Neue konstruktive Antworten sind immer willkommen.
Pieter Goosen
Dies ist die richtige (moderne) Antwort. Martin-Al merkt sich jedoch, dass er die Gettext-Lokalisierungs-Wrapper-Funktion verwendet. Daher sollte dies ebenfalls sorgfältig untersucht werden: wordpress.stackexchange.com/a/6819/3687
Tom Auger
5

Schauen Sie sich wp-admin/edit-form-advanced.phpZeile 246 an (Zeile 329, ab 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
quelle
Klar ist, dass dies in 3.1 neu ist .
Jan Fabry
2

Der beste Weg, um das gewünschte Titelformat zu erhalten, besteht darin, den Titel vollständig zu entfernen und zwei benutzerdefinierte Felder für die Namensteile mit den richtigen Bezeichnungen hinzuzufügen. Wenn der Beitrag gespeichert ist, erstellen Sie den Titel per PHP.

fuxia
quelle