✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Załaduj wszystkie niestandardowe pola WordPress za pomocą zapytania do bazy danych

14

Podczas pobierania informacji z bazy danych WordPressa wolę unikać bezpośrednich zapytań do bazy danych, ale zdarzają się sytuacje, w których mogą być przydatne (i ważne jest, aby zostało to zrobione prawidłowo).

Jednym z przypadków użycia, w których może to być pomocne, jest pobranie zestawu danych jednego typu. Przykład: załóżmy, że musisz załadować wszystkie niestandardowe pola WordPress.

W chwili pisania tego tekstu nie ma funkcji, o której wiem, że wykona to zadanie, więc oto, w jaki sposób wysyłam zapytanie do bazy danych, aby to zrobić.

Załaduj wszystkie niestandardowe pola WordPress

Należy zwrócić uwagę na kilka kwestii dotyczących pól niestandardowych, które są powiązane z danym postem:

  • pola niestandardowe są przechowywane w metadanych posta,
  • pola niestandardowe są uważane za prywatne, dlatego są poprzedzone podkreśleniem,
  • Standardy kodowania WordPressa tego nie polubią (więc może być konieczne zignorowanie standardów)

Możesz przeczytać o nich wszystko w Kodeksie.

I tak, łatwo jest uzyskać wszystkie niestandardowe informacje dla jednego posta. Ale jeśli pracujesz nad projektem, w którym musisz pobrać wszystkie pola niestandardowe, a mianowicie te, które są prywatne, musisz upewnić się, że pytasz o ciągi, które zaczynają się od podkreślenia.

Aby załadować wszystkie niestandardowe pola WordPress do bazy danych, oto zapytanie, którego używam :

<?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;
}

Kilka rzeczy, o których należy pamiętać w powyższym zapytaniu:

  • Korzystam z funkcji przygotowania przed get_results. To jest dla parametryzacji i bezpieczeństwa. Jeśli to dla Ciebie nowość, polecam przeczytanie tego artykułu.
  • Zwraca wszystkie klucze meta i wartości meta w tablicy,
  • W zależności od liczby rekordów, które chcesz zwrócić, może to zająć trochę czasu (i powinno być wykonywane w partiach).

Wreszcie, dla tych, którzy są ciekawi, indeksy nie istnieją w kolumnie meta_value, ale w kolumnie meta_key.

Kolumny w tabeli Post Meta z indeksami.

Jeśli więc zdecydujesz się zmodyfikować zapytanie i chcesz użyć kolumn, które mają indeksy, odnieś się do meta_id, post_id i meta_key.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów