Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Charger tous les champs personnalisés WordPress via une requête de base de données

24

Lors de la récupération d’informations de la base de données WordPress, je préfère éviter d’utiliser des requêtes directes dans la base de données, mais il y a des moments où elles peuvent être utiles (et il est important que ce soit fait correctement).

Un cas d’utilisation dans lequel cela peut être utile est lorsque vous devez récupérer un ensemble de données d’un seul type. Exemple: Supposons que vous deviez charger tous les champs personnalisés WordPress.

Au moment d’écrire ces lignes, il n’y a aucune fonction dont je sache qui fera cela, alors voici comment j’interroge la base de données pour le faire.

Charger tous les champs personnalisés WordPress

Il y a plusieurs choses à noter concernant les champs personnalisés associés à une publication donnée :

  • les champs personnalisés sont stockés dans les métadonnées post,
  • les champs personnalisés sont considérés comme privés, ils sont donc précédés d’un trait de soulignement,
  • les normes de codage WordPress n’aimeront pas cela (vous devrez donc peut-être ignorer les normes)

Vous pouvez tout lire à leur sujet dans le Codex.

Et oui, il est facile d’obtenir toutes les informations personnalisées pour un seul message. Mais si vous travaillez sur un projet où vous devez récupérer tous les champs personnalisés, à savoir ceux qui sont privés, vous devez vous assurer que vous recherchez des chaînes commençant par un trait de soulignement.

Donc pour charger tous les champs personnalisés WordPress dans la base de données, voici la requête que j’utilise :

<?php

function get_the_custom_fields() {

    global $wpdb;

    $results = $wpdb->get_results(
        $wpdb->prepare(
            "
            SELECT meta_key, meta_value
            FROM   $wpdb->postmeta
            WHERE  meta_key REGEXP '%s'
            ", '^[_]') );

    return $results;
}

Quelques points à noter à propos de la requête ci-dessus :

  • J’utilise la fonction prepare avant get_results. C’est pour le paramétrage et la sécurité. Si c’est nouveau pour vous, je vous recommande de lire cet article.
  • Cela renvoie toutes les méta-clés et les méta-valeurs dans un tableau,
  • Selon le nombre d’enregistrements que vous cherchez à renvoyer, cela peut prendre un certain temps (et devrait peut-être être fait par lots).

Enfin, pour les curieux, les index n’existent pas sur la colonne meta_value mais existent sur la colonne meta_key.

Les colonnes de la table Post Meta avec index.

Donc, si vous choisissez de modifier la requête et que vous cherchez à utiliser des colonnes qui ont des index, reportez-vous à meta_id, post_id et meta_key.

Source d’enregistrement: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More