Introduction
Les bases
Les plugins incontournables
Travaux pratiques
Installation et configuration du projetRéservé aux membres premiums
16 min
En tête et pied de pageRéservé aux membres premiums
42 min
La page actualitésRéservé aux membres premiums
36 min
La single actualitéRéservé aux membres premiums
56 min
Gestion des biensRéservé aux membres premiums
25 min
Single d'un bienRéservé aux membres premiums
26 min
Listing des biensRéservé aux membres premiums
26 min
Correction du menuRéservé aux membres premiums
10 min
Recherche des biensRéservé aux membres premiums
24 min
Page d'accueilRéservé aux membres premiums
55 min
Formulaire de contactRéservé aux membres premiums
19 min

Dans ce chapitre nous allons voir comment gérer les métadonnées associées à un article et comment créer une interface pour les administrer. Les métadonnées permettent de sauvegarder des informations supplémentaires.

// Pour ajouter une meta
update_post_meta($postId, 'ma_meta', 'ma valeur');

// Pour mettre à jour ou ajouter une meta
update_post_meta($postId, 'ma_meta', 'ma valeur');

// Pour supprimer une meta
delete_post_meta($postId, 'ma_meta');

// Récupère une métadonnée
get_post_meta($postId, 'ma_meta');

Pour pouvoir mettre à jour les informations nous allons ajouter une "metabox" qui s'affichera dans l'interface d'administration. On utilisera 2 actions :

  • add_meta_boxes, permet d'enregistrer notre boite et permettra à une fonction de déclarer les boîtes à ajouter via la fonction add_meta_box()
  • save_post, permettra de se greffer à la sauvegarde de l'article et de mettre en place la persistance des informations.

Voici un exemple de code, sous forme de classe, pour vous faire une idée du fonctionnement générale du processus.

<?php

class SponsoMetaBox {

    const META_KEY = 'montheme_sponso';
    const NONCE = '_montheme_sponso_nonce';

    public static function register () {
        add_action('add_meta_boxes', [self::class, 'add'], 10, 2);
        add_action('save_post', [self::class, 'save']);
    }

    public static function add ($postType, $post) {
        if ($postType === 'post' && current_user_can('publish_posts', $post)) {
            add_meta_box(self::META_KEY, 'Sponsoring', [self::class, 'render'], 'post', 'side');
        }
    }

    public static function render ($post) {
        $value = get_post_meta($post->ID, self::META_KEY, true);
        wp_nonce_field(self::NONCE, self::NONCE);
        ?>
        <input type="hidden" value="0" name="<?= self::META_KEY ?>">
        <input type="checkbox" value="1" name="<?= self::META_KEY ?>" <?php checked($value, '1') ?>>
        <label for="monthemesponso">Cet article est sponsorisé ?</label>
        <?php
    }

    public static function save ($post) {
        if (
            array_key_exists(self::META_KEY, $_POST) && 
            current_user_can('publish_posts', $post) &&
            wp_verify_nonce($_POST[self::NONCE], self::NONCE)
            ) {
            if ($_POST[self::META_KEY] === '0') {
                delete_post_meta($post, self::META_KEY);
            } else {
                update_post_meta($post, self::META_KEY, 1);
            }
        }
    }

}

Vous pourrez ensuite récupérer cette métadonnées dans vos page à l'aide de la fonction get_post_meta().

    <?php if(get_post_meta(get_the_ID(), SponsoMetaBox::META_KEY, true) === '1'): ?>
      <div class="alert alert-info">
        Cet article est sponsorisé
      </div>
    <?php endif ?>