Wiem, jak uzyskać niestandardową wartość pola dla określonego postu.
get_post_meta($post_id, $key, $single);
Potrzebuję wszystkich wartości związanych z określonym niestandardowym kluczem postu we wszystkich postach .
Czy ktoś wie, jak to zrobić skutecznie? Nie chciałbym przeglądać wszystkich identyfikatorów postów w bazie danych.
Przykład:
4 posty z różnymi wartościami dla niestandardowego pola o nazwie „Nastrój”. 2 posty mają wartość „szczęśliwy”, 1 post ma „zły”, a 1 post „smutny”
Chcę generować: we wszystkich postach mamy: dwóch szczęśliwych, jednego gniewnego i jednego smutnego (-ych) autora (ów).
Ale dla WIELU postów.
To, czego szukam to:
- funkcja WP, aby to uzyskać. lub
- niestandardowe zapytanie, aby uzyskać je tak skutecznie, jak to możliwe.
custom-field
mikkelbreum
źródło
źródło
Odpowiedzi:
Jednym z możliwych podejść byłoby użycie jednej z metod pomocniczych w klasie WPDB do wykonania bardziej dopracowanego zapytania opartego na meta. Warunkiem korzystania z niektórych z tych funkcji jest jednak to, że zwykle nie odzyskujesz prostej tablicy danych i zwykle musisz robić niepotrzebne odwołania do właściwości obiektu, nawet jeśli wywołujesz tylko jedną kolumnę lub wiersz.
Oczywiście nie wszystkie funkcje są takie same, a celowa wzmianka trafia do metody WPDB ,
get_col
która zwraca prostą płaską tablicę danych , o które pytamy. Podaję tę informację konkretnie, ponieważ poniższy przykład wywoła tę metodę .WordPress - WPDB Wybieranie kolumny danych
$ wpdb-> get_col ()
Oto przykładowa funkcja, która wysyła zapytanie do bazy danych dla wszystkich postów wybranego typu postu, statusu postu i określonego meta klucza (lub pola niestandardowego dla mniej technicznie nastawionych).
Na przykład, jeśli chcesz dowiedzieć się, które posty mają meta klucz oceny , w przypadku filmów typu post i chcesz przechowywać te informacje w zmiennej, przykładem takiego połączenia może być ...
Jeśli nie chcesz nic więcej robić niż wydrukować te dane na ekranie, funkcja implode PHP może szybko podzielić tę prostą tablicę na linie danych.
Możesz również użyć zwróconych danych, aby dowiedzieć się, ile wpisów ma te meta wartości, wykonując na przykład prostą pętlę nad zwróconymi danymi i budując tablicę zliczeń.
Ta logika może być zastosowana do różnych rodzajów danych i rozszerzona na wiele różnych sposobów. Mam więc nadzieję, że moje przykłady były pomocne i wystarczająco proste do naśladowania.
źródło
DISTINCT
zaraz poSELECT
powyższej funkcji. Może się przydać.Chciałbym tylko dodać jedną drobną rzecz do powyższego kodu t31os . Zmieniłem „SELECT” na „SELECT DISTINCT”, aby wyeliminować zduplikowane wpisy, kiedy sam korzystałem z tego kodu.
źródło
Używanie globalnego $ wpdb nie jest dobre ani potrzebne:
źródło
najszybszym sposobem byłoby niestandardowe zapytanie SQL i nie jestem pewien, ale możesz spróbować
Jeśli coś, to początek.
źródło
Aby uzyskać wszystkie wartości meta kluczem meta
Sprawdź kodeks wp-> db wordpress
źródło
Nie ma powodu, dla którego nie można scalić t31os i kodu Bainternet, aby uzyskać przygotowaną instrukcję wielokrotnego użytku (styl wordpress), która zwraca liczbę i wartości w jednej wydajnej operacji.
To niestandardowe zapytanie, ale nadal korzysta z warstwy abstrakcji bazy danych wordpress - więc na przykład nie ma znaczenia, jakie naprawdę są nazwy tabel lub czy się zmieniają, i jest to przygotowane oświadczenie, dzięki czemu jesteśmy o wiele bezpieczniejsi od ataków SQL itp. .
W tym przypadku nie sprawdzam już typu wpisu i wykluczam puste ciągi:
W tym konkretnym jest
Zwróci tablicę obiektów takich jak:
źródło
Używaj następujących narzędzi Foreach
Zakłada, że nazwa niestandardowego klucza pola to
źródło