Astuce : Paramètres de Custom Post Type

Astuce : Paramètres de Custom Post Type

J’inaugure mon blog avec une petite astuce que j’ai testé ce matin.

Dans un snippet récupéré sur le web, le code utilisait la fonction get_post_types, qui permet de récupérer l’ensemble des paramètres des CPT (Custom Post Type) créés.

[pastacode provider= »manual » lang= »php » message= »Exemple d’utilisation de get_post_types »]

<?php
...
	$post_types = get_post_types( array( '_builtin' =&gt; false ), 'objects' ); 

	foreach ( $post_types as $post_type ) { 
.... 
?>

[/pastacode]

Dans la boucle foreach nous voulons utiliser plusieurs paramètres du « custom post type » (attribut perso de l’objet), seulement voilà, ceux ci ne sont pas stockés dans le « custom post type » de wordpress, il faut donc appeler importer le fichier de fonction ou la classe puis appeler une fontion get_ approprié.

L’astuce est d’ajouter tout simplement notre attribut directement dans l’objet par défaut de WordPress. Lors de l’appel de la fonction register_post_type, on ajoute la pair « clé / valeur » de notre choix. Içi nous allons mettre 'attributPerso' => 'company'.

[pastacode lang= »php » message= »Enregistrement du CPT » highlight= »5″ provider= »manual »]

<?php
...
$args = array(
	/* config personnel */
	'attributPerso' => 'company',

	'labels' => $labels,
	'description' => __( 'Companies management' ),
	'public' => true,
	'exclude_from_search' => false,
	'publicly_queryable' => true,
	'show_ui' => true,
	'show_in_nav_menus' => true,
	'show_in_menu' => true,
	'show_in_admin_bar' => true,
	'menu_position' => 100,
	'menu_icon' => "",
	'hierarchical' => false,
	'supports' => false, 
	'register_meta_box_cb' => array($this, 'ptw_company_meta_boxes'),
	'has_archive' => true,
	'rewrite' => $rewrite,
	'query_var' => true,
	'can_export' => true,
);

register_post_type( 'company', $args );
...
?>

[/pastacode]

Nous pouvons donc par la suite l’utiliser pour ce que l’on veut.

[pastacode lang= »php » message= »Utilisation bidon du paramètre » highlight= »7-8″ provider= »manual »]

<?php
...
	$post_types = get_post_types( array( '_builtin' => false ), 'objects' ); 

	foreach ( $post_types as $post_type ) { 

		if ( isset($post_type->attributPerso) ){
			echo '<div class="' . $post_type->attributPerso. '">' . $post_type->name . '</div>';
		}
		else{
			echo '<div class="cpt">' . $post_type->name . '</div>';
		}
	}
.... 
?>

[/pastacode]


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *