Modifier le texte d'aide "Entrez le titre ici" sur un type de publication personnalisé

20

J'ai un type de publication personnalisé créé pour un répertoire qui finira par être trié par ordre alphabétique. Je vais trier les messages par ordre alphabétique par titre, donc je veux m'assurer que le titre est entré en tant que nom / prénom. Existe-t-il un moyen de changer ce texte d'aide par défaut - "Entrez le titre ici" - dans mon message personnalisé en quelque chose d'autre?

John Chandler
la source
1
Pour les personnes qui consultent cette question maintenant (depuis WordPress 3.1), veuillez consulter certaines des réponses les plus récentes ci-dessous pour une meilleure (plus de solution "WordPress Way").
Tom Auger

Réponses:

21

Il n'y a aucun moyen de personnaliser explicitement cette chaîne. Mais il est passé par la fonction de traduction et est donc facile à filtrer.

Essayez quelque chose comme ça (n'oubliez pas de changer votre type de message):

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
la source
4
Utilisez le filtre enter_title_here
Pbearne
2
Bien, mais voyez les nouvelles réponses ci-dessous.
Mark
35

Je sais que je suis un peu en retard pour la fête ici, mais j'aimerais ajouter que le enter_title_herefiltre a été ajouté spécifiquement à cet effet dans 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;
}

Modifiez your_post_typeet your_textdomainpour faire correspondre votre nom de type de publication et votre domaine de texte.

Dave Romsey
la source
5
Petite précision. La vérification is_admin () ne devrait pas être nécessaire car ce filtre lui-même ne se déclenchera que dans la zone d'administration. Si, pour une raison quelconque, vous aviez un formulaire frontal, il est très envisageable que vous souhaitiez que ce filtre soit appliqué de toute façon.
Philip Downer, le
7

Désolé de creuser cette question, mais il existe une meilleure solution depuis WordPress 3.1. Le enter_title_herefiltre.

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
la source
2
De nouvelles réponses constructives sont toujours les bienvenues.
Pieter Goosen
C'est la bonne réponse (moderne), mais la réponse de Martin-Al se souvient d'utiliser la fonction de wrapper de localisation gettext, donc devrait également être soigneusement étudiée: wordpress.stackexchange.com/a/6819/3687
Tom Auger
5

Jetez un œil wp-admin/edit-form-advanced.phpà la ligne 246 (ligne 329, à partir de 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
la source
Pour être clair, c'est nouveau dans 3.1 .
Jan Fabry
2

La meilleure façon d'obtenir le format de titre souhaité est de supprimer complètement le titre et d'ajouter deux champs personnalisés pour les parties de nom avec des étiquettes appropriées. Lorsque le message est enregistré, créez le titre par PHP.

fuxia
la source