Construire et afficher une Metabox WordPress

18 novembre 2016 | Tutoriels | 0 | Modifié le : 22 novembre 2016

Construire et afficher une Metabox WordPress : Nous allons dans ce tutoriel apprendre à créer une metabox, structure qui permet donc de récolter des données concernant un Post un Post type personnalisé. Dans l’exemple que nous allons utiliser, nous allons nous inspirer de l’exemple de Themespress.ca.

Donc nous voulons construire une Metabox qui comprend la structure suivante :
– facile
– Intermédiaire
– Difficile

Cette meta box va permettre comme vous l’avez compris, de mesurer pour les utilisateurs le niveau de notre Post ou notre Post Type. Il y a plusieurs façons de créer une metabox. Nous en proposons une …

Construire et afficher une Metabox WordPress

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function statut_diffucult_get_meta( $value ) {
	global $post;
 
	$field = get_post_meta( $post->ID, $value, true );
	if ( ! empty( $field ) ) {
		return is_array( $field ) ? stripslashes_deep( $field ) : stripslashes( wp_kses_decode_entities( $field ) );
	} else {
		return false;
	}
}
 
function statut_diffucult_add_meta_box() {
	add_meta_box(
		'statut_diffucult-statut-diffucult',
		__( 'Statut Difficulté', 'statut_diffucult' ),
		'statut_diffucult_html',
                'post',
		'side',
		'high'
	);
}
add_action( 'add_meta_boxes', 'statut_diffucult_add_meta_box' );

Dans la fonction statut_diffucult_add_meta_box, on peut comprendre que nous construisons notre structure. Remarquons aussi que nous l’utilisons pour les articles WordPress. (‘post’) == // Changer pour votre Post Type.

Le ‘side’ dans notre fonction correspond aux placements choisis dans le Post Type. Ici, le ‘side’ correspond a la barre latéral droite de WordPress. Le ‘high’ définit la priorité. Dans notre cas nous mettons la priorité en haut. Conclusion la metabox est pour les articles et se trouve en haut à droite dans la gestion de l’article ouvert.

Maintenant affichons notre contenu de la metabox qui comprends trois inputs de type checkbox, qui vont nous donner les choix (Facile, Intermédiaire, Difficile), puis permettons de sauvegarder notre choix et devenir une donnée choisie.

Afficher le contenu de la Metabox :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function statut_diffucult_html( $post) {
	wp_nonce_field( '_statut_diffucult_nonce', 'statut_diffucult_nonce' ); ?>
	<p>
        <input type="checkbox" name="statut_diffucult_facile" id="statut_diffucult_facile" value="facile" <?php echo ( statut_diffucult_get_meta( 'statut_diffucult_facile' ) === 'facile' ) ? 'checked' : ''; ?>>
		<label for="statut_diffucult_facile"><?php _e( 'Facile', 'statut_diffucult' ); ?></label>	
 
	</p>	
	<p>
        <input type="checkbox" name="statut_diffucult_intermdiaire" id="statut_diffucult_intermdiaire" value="intermdiaire" <?php echo ( statut_diffucult_get_meta( 'statut_diffucult_intermdiaire' ) === 'intermdiaire' ) ? 'checked' : ''; ?>>
		<label for="statut_diffucult_intermdiaire"><?php _e( 'Interm&eacute;diaire', 'statut_diffucult' ); ?></label>	
	</p>	
	<p>
	    <input type="checkbox" name="statut_diffucult_difficile" id="statut_diffucult_difficile" value="difficile" <?php echo ( statut_diffucult_get_meta( 'statut_diffucult_difficile' ) === 'difficile' ) ? 'checked' : ''; ?>>
		<label for="statut_diffucult_difficile"><?php _e( 'Difficile', 'statut_diffucult' ); ?></label>	
	</p>
<?php
}
 
function statut_diffucult_save( $post_id ) {
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
	if ( ! isset( $_POST['statut_diffucult_nonce'] ) || ! wp_verify_nonce( $_POST['statut_diffucult_nonce'], '_statut_diffucult_nonce' ) ) return;
	if ( ! current_user_can( 'edit_post', $post_id ) ) return;
 
	if ( isset( $_POST['statut_diffucult_facile'] ) )
		update_post_meta( $post_id, 'statut_diffucult_facile', esc_attr( $_POST['statut_diffucult_facile'] ) );
	else
		update_post_meta( $post_id, 'statut_diffucult_facile', null );
	if ( isset( $_POST['statut_diffucult_intermdiaire'] ) )
		update_post_meta( $post_id, 'statut_diffucult_intermdiaire', esc_attr( $_POST['statut_diffucult_intermdiaire'] ) );
	else
		update_post_meta( $post_id, 'statut_diffucult_intermdiaire', null );
	if ( isset( $_POST['statut_diffucult_difficile'] ) )
		update_post_meta( $post_id, 'statut_diffucult_difficile', esc_attr( $_POST['statut_diffucult_difficile'] ) );
	else
		update_post_meta( $post_id, 'statut_diffucult_difficile', null );
}
add_action( 'save_post', 'statut_diffucult_save' );

Afficher la Meta Key :

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$key = 'statut_diffucult_facile';
$themetaf = get_post_meta($post->ID, $key, true);
if($themetaf != '') {
echo'<div class="side-special">';
echo'<span>';
echo $themetaf;
echo'</span>';
echo'</div>';
}
else {
}
?>

Référence

#Metabox WordPress