WordPress : Méta données

image_pdf

Pour manipuler les méta données (post metas) WordPress issues des métabox, vous allez créer une métabox personnalisée pour ajouter des champs supplémentaires à vos articles, pages ou types de publications personnalisés.

Une fois que les utilisateurs auront rempli ces champs dans l’éditeur, vous pourrez enregistrer ces données personnalisées en utilisant update_post_meta lorsque le contenu est sauvegardé.

Créer la métabox personnalisée avec add_meta_box :

Utilisez la fonction add_meta_box pour créer votre méta box personnalisée. Cette fonction vous permettra d’ajouter des champs supplémentaires dans l’éditeur de contenu où les utilisateurs pourront saisir des données spécifiques.

function mon_meta_box_callback( $post ) {
  // code pour afficher les champs de la méta box et récupérer les valeurs existantes si nécessaire
  $valeur_champ = get_post_meta( $post->ID, 'mon_champ', true );

  // Afficher le champ et utiliser la valeur existante si disponible
  echo '<input type="text" name="mon_champ" value="' . esc_attr( $valeur_champ ) . '" />';
}

function mon_meta_box() {
  add_meta_box( 'mon_meta_box_id', 'Ma Méta Box', 'mon_meta_box_callback', 'post', 'normal', 'default' );
}

add_action( 'add_meta_boxes', 'mon_meta_box' );

Dans la fonction mon_meta_box_callback, vous devez afficher les champs HTML que vous souhaitez ajouter à la métabox.

Vous pouvez également récupérer les valeurs existantes des champs en utilisant get_post_meta.

Remarque : si le dernier paramètre est défini sur true, la fonction get_post_meta renverra uniquement la première valeur trouvée, même si plusieurs valeurs sont associées à la même clé.

Sauvegarder les données de la métabox avec save_post et update_post_meta :

Utilisez le hook save_post pour sauvegarder les données de la métabox lorsque le contenu est enregistré.

function mon_save_meta_box( $post_id ) {
  if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
    return;

  if ( isset( $_POST['mon_champ'] ) ) {
    $valeur_champ = sanitize_text_field( $_POST['mon_champ'] );
    update_post_meta( $post_id, 'mon_champ', $valeur_champ );
  }
}

add_action( 'save_post', 'mon_save_meta_box' );

Dans cette fonction, nous utilisons update_post_meta pour sauvegarder la valeur du champ personnalisé (mon_champ) dans la base de données.

Remarque : c’est sur ce principe que sont enregistrées les valeurs des champs ACF (Advanced Custom Fields).

Nous utilisons sanitize_text_field pour nettoyer la valeur avant de la sauvegarder pour des raisons de sécurité.

Remarque : en base de données, les méta données sont enregistrées dans la table wp_postmeta.

Laisser un commentaire