web-dev-qa-db-fra.com

Comment utiliser le nom d'affichage comme titre de publication dans un type de publication personnalisé?

J'ai créé un type de message personnalisé appelé "enseignant" et je souhaite utiliser le nom d'affichage de cette personne comme titre de son message.

Détails: 1. Le type de message personnalisé "enseignant" prend en charge le titre. 2. Seuls les enseignants connectés peuvent poster. 3. J'utilise la publication frontale de Rev Voodoo

Je me suis inspiré de divers extraits que j'ai trouvés ici mais que je ne peux pas faire fonctionner:

function wpa65253_teacher_title( $title ) {
    global $post;
    if ( isset( $post->ID ) ) :
        if ( empty( $_POST['post_title'] ) && in_the_loop() && 'teacher' == get_post_type( $post->ID ) )
            $title = get_user_meta($user->ID, 'display_name', true);
    endif;
    return $title;
}
add_action( 'submitpost_box', 'wpa65253_teacher_title' );

J'ai rencontré diverses questions sur la création d'un titre basé sur des champs personnalisés, mais je souhaite les extraire du nom de l'utilisateur figurant dans son profil.

Ce code par t31os ne fonctionne plus non plus:

add_action( 'submitpost_box', 'hidden_type_title' );

function hidden_type_title() {
    global $current_user, $post, $post_type;

    // If the current type supports the title, nothing to done, return
    if( post_type_supports( $post_type, 'title' ) )
        return;

    ?>
    <input type="hidden" name="post_title"value="<?php echo esc_attr( htmlspecialchars( get_the_author_meta( 'display_name', $current_user->data->ID ) ) ); ?>" id="title" />
    <?php
}

Qu'est-ce que je fais mal?

1
annabwashere

Si vous utilisez ce code par Rev Voodoo, vous devrez éditer ce code , sans essayer de vous connecter au code principal de WordPress. Le formulaire de ce lien se soumet à lui-même et gère son propre post-traitement, contournant ainsi de nombreux points d'ancrage.

Certains des crochets que vous essayez d'utiliser ne fonctionnent pas. Je ne jurerai pas sans des recherches plus approfondies, mais je ne pense pas que je pourrais utiliser ou tenter d'utiliser le crochet submitpost_box à cette fin (il est exécuté tant que le formulaire de modification est affiché, et non lorsqu'il est soumis). . Cela ne fonctionnera certainement pas dans ce cas car le code de Rev Voodoo ne charge jamais la page qui utilise ce hook-- wp-admin/edit-form-advanced.php .

Il me semble que vous devez modifier les éléments suivants:

// Do some minor form validation to make sure there is content
if (isset ($_POST['title'])) {
    $title =  $_POST['title'];
} else {
    echo 'Please enter the wine name';
}

Je ne sais pas où vous vous attendez à recevoir le nom de votre professeur. Je ne suis pas très à l'aise avec cela, mais vous déclarez que "Seuls les enseignants connectés peuvent poster". Si vous avez correctement verrouillé le formulaire, vous pourrez peut-être faire quelque chose comme ceci au lieu de ce code:

// Do some minor form validation to make sure there is content
global $currentuser;
get_currentuserinfo();
if (isset($current_user->display_name)) {
    $title = $current_user->display_name;
} else {
    echo "No user data";
}

Beaucoup de mises en garde :

  • Complètement non testé
  • Sur la base de votre déclaration

    Je veux utiliser le nom d'affichage de cette personne comme titre de son message

    ce code détourne complètement le titre. Si vous voulez ajouter ou ajouter le nom complet à un autre titre qui ne fonctionnera pas.

  • Vous avez une chance d'obtenir des slugs post comme john-smith, john-smith-2, john-smith-3, etc
  • L'utilisation de get_currentinfo m'inquiète, car je ne sais pas comment l'accès à votre formulaire est contrôlé. Si l'accès au formulaire est insuffisant, tout utilisateur peut poster en tant qu'enseignant.
2
s_ha_dum