web-dev-qa-db-fra.com

Comment définir un titre de type de message personnalisé sans prise en charge

Alors, j’ai posé cette question différemment dans un autre fil, mais c’était plutôt une question de type conseil, elle n’a donc pas donné de réponse utile. Je crois que je peux mieux formuler le texte et que je devrais aider certains d'entre vous à déchiffrer ce que j'essaie d'accomplir et éventuellement à aider quelqu'un d'autre une fois que nous aurons collaboré à une solution.

J'ai un type de publication personnalisé qui utilise des valeurs très limitées de Supports ( décrites ici ), car je n'ai besoin que des valeurs de méta-zone pour mon type de publication personnalisé. Cela n'a pas de sens pour mon type d'inclure un titre et un contenu. Code ci-dessous:

register_post_type( 'athlete',
        array(
            'labels' => array(
                'name' => 'Athletes',
                'singular_name' => 'Athlete',
                'add_new' => 'Add New',
                'add_new_item' => 'Add New Athlete',
                'edit' => 'Edit',
                'edit_item' => 'Edit Athlete',
                'new_item' => 'New Athlete',
                'view' => 'View',
                'view_item' => 'View Athlete',
                'search_items' => 'Search Athletes',
                'not_found' => 'No Athletes found',
                'not_found_in_trash' => 'No Athletes found in Trash',
                'parent' => 'Parent Athlete'
            ),

            'public' => true,
            'menu_position' => 15,
            'supports' => array( 'thumbnail' ),
            'taxonomies' => array( '' ),
            'has_archive' => true
        )
    );

Comme vous pouvez le constater, je n'ai besoin que de l'option de prise en charge des miniatures car le reste de mon type de message sera constitué de méta-boîtes (non comprises dans cette question). Le problème, c’est que, lorsque j’enregistre un sportif, j’ai deux problèmes: je ne sais pas comment afficher mes valeurs de méta-boîtes dans la liste des athlètes (sous forme de colonnes dans la grille) et je ne sais pas comment définir la valeur de titre comme il le règle toujours sur "Généré automatiquement", ce qui n'est pas préférable. Si le titre doit être un champ interrogeable, je préférerais que la valeur soit définie sur [Prénom] + [Nom]. Est-ce que n'importe qui peut aider avec ces deux problèmes et expliquer si je vais rencontrer des problèmes en utilisant un type de publication personnalisé au lieu d'utiliser des tables de base de données personnalisées et une interface utilisateur personnalisée pour gérer mon objet?

4
clockwiseq

J'ai aussi touché à cela. Pour une meta box, je recommande le plugin Meta Box (auquel je contribue régulièrement du code). Un bon tutoriel sur son utilisation est ici . Pour les colonnes personnalisées, effectuez une recherche dans WPSE mais this devrait vous aider à démarrer. L'enregistrement du titre de l'article implique l'utilisation du filtre save_post. Lorsque vous configurez votre méta-boîte, rappelez-vous l'identifiant que vous avez utilisé pour le prénom et le nom et remplacez-le ensuite dans le code ci-dessous:

add_filter( 'save_post_athlete', 'wpse88655_set_title', 10, 3 );
function wpse88655_set_title ( $post_id, $post, $update ){
    //This temporarily removes filter to prevent infinite loops
    remove_filter( 'save_post_athlete', __FUNCTION__ );

    //get first and last name meta
    $first = get_metadata( 'athelete_first_name', $post_id ); //meta for first name
    $last = get_metadata( 'athelete_last_name', $post_id );   //meta for last name

    $title = $first . ' ' . $last;

    //update title
    wp_update_post( array( 'ID'=>$post_id, 'post_title'=>$title ) );

    //redo filter
    add_filter( 'save_post_athlete', __FUNCTION__, 10, 3 );
}
3
Manny Fleurmond