NB : Faire une sauvegarde de votre thème, de votre fichier et/ou votre base de données avant d’ajouter ces fonctions tutoriels.
Publié le : 18 novembre 2016 - Modifié le : 18 janvier 2022
Temps de lecture : 4 minutes, 47 seconds - 235 mots
Partager la publication "Construire et afficher une Metabox WordPress"
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' );