Saya tahu cara mendapatkan nilai bidang khusus untuk pos tertentu.
get_post_meta($post_id, $key, $single);
Yang saya butuhkan adalah mendapatkan semua nilai yang terkait dengan kunci posting khusus, di semua posting .
Adakah yang tahu cara yang efisien untuk melakukan ini? Saya tidak ingin mengulang semua postingan di DB.
Contoh:
4 posting semua dengan nilai yang berbeda untuk bidang khusus yang disebut 'Mood'. 2 posting memiliki nilai 'bahagia', 1 posting memiliki 'marah' dan 1 posting memiliki 'sedih'
Saya ingin menampilkan: di semua posting yang kami miliki: dua bahagia, satu marah dan satu penulis sedih.
Tetapi untuk BANYAK posting.
Yang saya cari adalah:
- fungsi WP untuk mendapatkan ini. atau
- permintaan khusus untuk mendapatkan ini seefisien mungkin.
custom-field
mikkelbreum
sumber
sumber
Jawaban:
Salah satu pendekatan yang mungkin adalah menggunakan salah satu metode pembantu di kelas WPDB untuk melakukan kueri berbasis meta yang lebih disempurnakan. Peringatan untuk menggunakan beberapa fungsi ini, adalah bahwa Anda biasanya tidak mendapatkan kembali array data sederhana dan biasanya harus membuat referensi yang tidak perlu ke properti objek, bahkan jika Anda hanya memanggil satu kolom atau baris.
Tentu saja, tidak semua fungsi adalah satu dan sama, dan penyebutan yang disengaja keluar ke metode WPDB ,
get_col
yang mengembalikan array datar sederhana dari data yang diminta, saya membuat penyebutan ini secara khusus karena contoh berikut akan memanggil metode ini .WordPress - WPDB Memilih kolom data
$ wpdb-> get_col ()
Berikut adalah contoh fungsi yang menanyakan database untuk semua posting dari jenis posting yang dipilih, status posting dan dengan kunci meta tertentu (atau bidang khusus untuk yang kurang berpikiran teknis).
Jadi misalnya, jika Anda ingin mengetahui postingan mana yang memiliki meta key rating , untuk film tipe postingan dan Anda ingin menyimpan informasi itu di dalam suatu variabel, contoh dari panggilan semacam itu adalah ..
Jika Anda ingin melakukan tidak lebih dari mencetak data itu ke layar, fungsi implode PHP dapat dengan cepat membagi array sederhana itu menjadi garis-garis data.
Anda juga dapat menggunakan data yang dikembalikan untuk mengetahui berapa banyak pos memiliki nilai meta ini dengan melakukan loop sederhana di atas data yang dikembalikan dan membangun array jumlah, misalnya.
Logika ini dapat diterapkan untuk berbagai jenis data, dan diperluas untuk bekerja dengan berbagai cara. Jadi saya berharap contoh saya cukup membantu dan sederhana untuk diikuti.
sumber
DISTINCT
tepatSELECT
pada fungsi di atas. Bisa bermanfaat.Saya hanya ingin menambahkan satu hal kecil ke kode t31os di atas. Saya mengubah "SELECT" menjadi "SELECT DISTINCT" untuk menghilangkan entri duplikat ketika saya menggunakan kode ini sendiri.
sumber
Tidak baik atau diperlukan untuk menggunakan $ global wpdb:
sumber
cara tercepat adalah kueri sql khusus dan saya tidak yakin tetapi Anda dapat mencoba
Jika ada maka ini adalah awal.
sumber
Untuk mendapatkan semua nilai meta dengan kunci meta
Periksa wp-> codex wordpress db
sumber
Tidak ada alasan mengapa Anda tidak dapat menggabungkan t31os dan kode Bainternet untuk memiliki pernyataan siap pakai yang dapat digunakan kembali (gaya wordpress) yang mengembalikan hitungan dan nilai-nilai dalam satu operasi yang efisien.
Ini permintaan khusus tetapi masih menggunakan lapisan abstraksi database wordpress - jadi misalnya tidak masalah apa nama tabel sebenarnya, atau jika mereka berubah, dan itu adalah pernyataan yang disiapkan sehingga kita jauh lebih aman dari serangan SQL dll .
Dalam hal ini saya tidak lagi memeriksa jenis posting dan saya mengecualikan string kosong:
Khususnya ini
Ini akan mengembalikan array objek seperti:
sumber
Gunakan yang berikut dengan foreach
Diasumsikan nama kunci bidang khusus Anda adalah
sumber