web-dev-qa-db-fra.com

Type de message personnalisé: définissez post_title sur un champion de type message personnalisé

J'ai créé un type de message personnalisé pour les employés d'une entreprise avec certains champs à remplir (courrier électronique, téléphone, etc.) et une zone de sélection reprenant certaines valeurs d'un autre type de message personnalisé appelé "société". J’ai désactivé/supprimé l’éditeur pour le type de poste employé, mais j’ai maintenant du mal à les répertorier dans l’aperçu car chaque "employé" manque un titre (post_title). Comment puis-je définir le post_title d'un employé pour qu'il soit égal au champ personnalisé "Nom"?

Comme beaucoup de code fonctionne, je ne montrerai que la partie où je sauvegarde mes données pour chaque employé:

foreach ($meta_box['fields'] as $field) {
    if(isset($_POST[$field['id']])) {
        if(!add_post_meta($post_id, $field['id'], $_POST[$field['id']], true)) update_post_meta($post_id, $field['id'], $_POST[$field['id']]);
    }

}

J'ai un tableau avec toutes les données, puis enregistre avec les bonnes valeurs pour chaque champ, mais puis-je dire ici que:

If($field[‘id’] == ‘emp_name’) {
    Set($post_title = $field[‘id’]); 
}

Ou quelque chose comme ça?

Toute aide ou suggestion serait très appréciée.

Merci - Mestika

2
Mestika

Je voudrais simplement filtrer the_title afin qu'il génère les données de champ personnalisé appropriées pour votre type de publication personnalisé:

<?php
function theme_slug_filter_the_title( $title ) {
    global $post;
    if ( 'employee' == get_post_type( $post ) ) {
        $custom = ( get_post_custom( $post->ID ) ? get_post_custom( $post->ID ) : false );
        $custom_title = ( isset( $custom['name'][0] ) ? $custom['name'][0] : '(Name Not Entered)' );
        return $custom_title;
    } else {
        return $title;
    }
}
add_filter( 'the_title', 'theme_slug_filter_the_title' );
?>

Cela remplacera le titre de l'article par la valeur du champ personnalisé "nom" de votre type d'article personnalisé. Si aucun "nom" n'est entré, le résultat est "(Nom non entré)".

(Bien entendu, vous devrez remplacer les valeurs pour get_post_type() et $custom['name'], selon le cas.)

3
Chip Bennett