NB : Faire une sauvegarde de votre thème, de votre fichier et/ou votre base de données avant d’ajouter ces fonctions tutoriels.

Construire et afficher une Metabox WordPress
Facile
Intermédiaire
Difficile

---- Cet article a été modifié : 18 janvier 2022

Temps de lecture : 4 minutes, 47 seconds - 235 mots

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 <strong>Themespress.ca</strong>.

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

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 <strong>statut_diffucult_add_meta_box</strong>, 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 à 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.

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', 'crio-child' ); ?></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édiaire', 'crio-child' ); ?></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', 'crio-child' ); ?></label>	
	</p>	
	<p>
	    <input type="checkbox" name="statut_diffucult_expert" id="statut_diffucult_expert" value="expert" <?php echo ( statut_diffucult_get_meta( 'statut_diffucult_expert' ) === 'expert' ) ? 'checked' : ''; ?>>
		<label for="statut_diffucult_expert"><?php _e( 'Expert', 'crio-child' ); ?></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 );
	
	if ( isset( $_POST['statut_diffucult_expert'] ) )
		update_post_meta( $post_id, 'statut_diffucult_expert', esc_attr( $_POST['statut_diffucult_expert'] ) );
	else
		update_post_meta( $post_id, 'statut_diffucult_expert', null );
	
	
}
add_action( 'save_post', 'statut_diffucult_save' );

Laissez un commentaire

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>