Les Types personnalises (Custom Post) sous WordPress

Bonjour et heureux de vous savoir entrain de nous lire en ce jour. Il s’est passe un bon bout de temps depuis notre dernier article et nous nous en excusons. Neanmoins nous sommes de retour et pour feter cela nous allons parler de WordPress et des Custom Post ou encore Type personnalisee en Français.

Déjà il faut savoir que par defaut WordPress ne dispose qu’un ensemble de type predefinit tel Article, Page. Cela correspond a la plus part des besoins, mais maintennt imaginer que dans votre site vous devez gerer une boutique, ou tout autre type. Vous vous rendez compte que vous etes bloquee. D’aucun utiliserons les plugins pour etendre WordPress, cela est pratique mais dans certains cas, c’est pas evident de trouver un plugin pour le type que l’on veut utiliser. C’est dans ce cadre que nous allons voir au cours de cet article comment utiliser les custom type.

Nous allons partir sur une installation de WordPress ne disposant que des types par defaut et l’etendre en lui ajoutant un type document qui servira a ajouter des documents sur le site.

Notre type document sera definit par les attributs suivant : {Id, Nom, Description, Auteur, Fichier, DateAjout }

Image sans titre9

Vous constatez bien que notre installation ne comprend que les types par defaut et aucun type particulier. Nous allons donc commencer nos travaux et pour cela nous allons ouvrir le fichier functions.php de notre theme

A la fin de ce fichier, rajoutons ceci :

function my_custom_post() {

// Definition des labels qu’utilisera notre type, remplacer document par votre type a vous

$labels = array(

‘name’               => _x( ‘Document’, ‘post type general name’ ),

‘singular_name’     => _x( ‘Document’, ‘post type singular name’ ),

‘add_new’           => _x( ‘Ajouter’, ‘book’ ),

‘add_new_item’       => __( ‘Ajouter un document’ ),

‘edit_item’         => __( ‘Modifier un document’ ),

‘new_item’           => __( ‘Nouveau document’ ),

‘all_items’         => __( ‘Toute les documents’ ),

‘view_item’         => __( ‘Afficher le document ‘),

‘search_items’       => __( ‘Rechercher un document’ ),

‘not_found’         => __( ‘Aucune document trouve’ ),

‘not_found_in_trash’ => __( ‘Aucune document dans la corbeille’ ),

‘parent_item_colon’ =>  »,

‘menu_name’         => ‘Documents’

);

 

// Ajout de l’element sur le menu en precisant sa position, sa description et ausssi les elements WordPress don’t on aura besoin, cela est fait au niveau de support

$args = array(

‘labels’       => $labels,

‘description’   => ‘Permet de creer les documents’,

‘public’       => true,

‘menu_position’ => 5,

‘supports’     => array( ‘title’, ‘editor’, ‘thumbnail’ ),

‘has_archive’   => true,

);

register_post_type( ‘document’, $args );

}

add_action( ‘init’, ‘my_custom_post’ );

 

Cette fonction permet d’initialiser notre type document, on a decide d’utiliser dans notre type les elements titre, editor et thumbnail de WordPress, l’equivalence sera la suite :

Titre = > Nom du document

Editor => Description du document

Thumbnail => Document en Fichier joint

RMQ : la liste des elements que l’on peut appeler au niveau du support sont disponible sur ici https://codex.wordpress.org/Function_Reference/post_type_supports

Apres cela, si nous retournons sur notre site, nous allons voir notre type Documents dans la liste des types

Image sans titre10

Et si on on clique sur ajouter un document, on aura l’apercu ci-dessous, on constate que notre type Document n’est pas totalement implementee, seul les elements venant de WordPress ont ete mis. Nous allons a present completer ce formulaire.

Image sans titre11

 

Avant de completer cela, nous allons tout d’abord rajoutee une fonction, elle sera chargee d’afficher les bons message lorsque l’on effectuera une operation sur un objet de type document

Ici, il faudra une fois de plus remplacer document par votre type a vous

function my_updated_messages( $messages ) {

global $post, $post_ID;

$messages[’emission’] = array(

0 =>  »,

1 => sprintf( __(‘Dcument mis a jour. <a href= »%s »>Voir ici</a>’), esc_url( get_permalink($post_ID) ) ),

2 => __(‘Champ personnalisable mis a jour.’),

3 => __(‘Champ personnalisable supprime.’),

4 => __(‘Document mis a jour.’),

5 => isset($_GET[‘revision’]) ? sprintf( __(‘Document restorer a la version de %s’), wp_post_revision_title( (int) $_GET[‘revision’], false ) ) : false,

6 => sprintf( __(‘Document publiee. <a href= »%s »>Voir ici</a>’), esc_url( get_permalink($post_ID) ) ),

7 => __(‘Document enregistre.’),

8 => sprintf( __(‘Document mis en ligne. <a target= »_blank » href= »%s »>Voir la preview</a>’), esc_url( add_query_arg( ‘preview’, ‘true’, get_permalink($post_ID) ) ) ),

9 => sprintf( __(‘Programmee pour le : <strong>%1$s</strong>. <a target= »_blank » href= »%2$s »>Voir la preview</a>’), date_i18n( __( ‘M j, Y @ G:i’ ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),

10 => sprintf( __(‘Brouillon mis a jour. <a target= »_blank » href= »%s »>Voir la preview</a>’), esc_url( add_query_arg( ‘preview’, ‘true’, get_permalink($post_ID) ) ) ),

);

return $messages;

}

add_filter( ‘post_updated_messages’, ‘my_updated_messages’ );

 

Passons maintenant a la mise a jour du formulaire. Nous devons ajouter les champs pour renseigner l’auteur. La date etant par defaut renseigner dans tout publication WordPress.

Renseignez les fonctions suivantes a la suite de celle que vous avez precedement ajoutees

add_action( ‘add_meta_boxes’, ‘auteur_box’ );

function auteur_box() {

add_meta_box(

‘auteur_box’,

__( ‘Nom de l\’auteur ‘, ‘myplugin_textdomain’ ),

‘auteur_box_content’,

‘document’,

‘side’,

‘high’

);

}

 

function auteur_box_content( $post ) {

wp_nonce_field( plugin_basename( __FILE__ ), ‘auteur_box_content_nonce’ );

echo ‘<label for= »auteur_name »>Entrer un nom</label><br>’;

echo ‘<input type= »text » id= »auteur_name » name= »auteur_name » />’;

}

add_action( ‘save_post’, ‘auteur_box_save’ );

 

function auteur_box_save( $post_id ) {

if ( defined( ‘DOING_AUTOSAVE’ ) && DOING_AUTOSAVE )

return;

if ( !wp_verify_nonce( $_POST[‘auteur_box_content_nonce’], plugin_basename( __FILE__ ) ) )

return;

if ( ‘page’ == $_POST[‘post_type’] ) {

if ( !current_user_can( ‘edit_page’, $post_id ) )

return;

} else {

if ( !current_user_can( ‘edit_post’, $post_id ) )

return;

}

$auteur_name = $_POST[‘auteur_name’];

update_post_meta( $post_id, ‘auteur_name’, $auteur_name );

}

 

Ces 3 fonctions permettent de definir une champ de texte auteur qui permettra d’ajouter le nom de l’auteur. On peut tres bien ajoutee un champ de texte, une zone de texte, une liste deroulante et bien plus. Apres cela si vous retournez sur votre page d’ajout de document vous devrez constater un changement.

Notre formulaire est a present complet, a chaque fois que l’on renseignera un document, on pourra aisement remplir toutes les informations

Publicités