Inilah Cara Mengambil Kiriman Apa Saja yang Anda Inginkan dengan WP_Query

Jika Anda telah membangun tema sederhana di masa lalu, kemungkinan adalah kebutuhan untuk mengambil kiriman sendiri tidak muncul. Lagipula, WordPress memuat 10 posting terbaru di halaman utama dan posting yang benar di halaman arsip. Bagaimana dengan skenario yang lebih kompleks? Bagaimana jika Anda ingin semacam sitemap dan Anda ingin daftar semua posting Anda dan halaman dipesan berdasarkan tanggal?


WP_Query adalah teman Anda, memungkinkan Anda untuk menarik posting dari database sesuai dengan kriteria Anda. Anda dapat mengambil semua posting dari satu kategori yang juga mengandung tag tertentu. Anda dapat mengambil semua halaman yang dibuat tahun lalu dan posting yang tidak memiliki gambar unggulan.

Dalam posting ini saya akan memberi Anda pandangan mendalam tentang cara kerja WP_Query – mari kita mulai!

Loop Kustom

Kunci untuk bekerja dengan baik dengan kueri khusus adalah menguasai argumen yang bisa Anda sampaikan kepada mereka. Sebelum kita melihat ini, mari kita buat yang cepat "kerangka" dapat kita gunakan untuk mendaftar posting. Pengulangan pada halaman arsip biasa akan terlihat seperti ini:

<?php if (have_posts ()): ?>
<?php while (have_posts ()): the_post () ?>

<?php berakhir ?>
<?php lain: ?>

<?php endif ?>

Ini berfungsi dengan baik karena sebelum halaman dimuat, WordPress telah mengambil posting yang benar. Saat kami menulis kueri khusus, kami akan memerlukan loop khusus. Kode ini sangat mirip, begini:

<?php
$ args = array (
‘post_type’ => ‘pos’,
‘post_status’ => ‘masa depan’
);
$ dijadwalkan = WP_Query baru ($ args);

if ($ dijadwalkan->have_posts ()):
?>
<?php while ($ dijadwalkan->have_posts ()): $ dijadwalkan->the_post () ?>

<?php berakhir ?>
<?php lain: ?>

<?php endif ?>

Kami membuat kueri WordPress baru menggunakan kelas WP_Query, meneruskannya parameter untuk menentukan jenis posting yang kami butuhkan. Kami kemudian memanggil metode have_posts () dan the_post () pada objek $ terjadwal kami.

Jika Anda baru mengenal pemrograman berorientasi objek dan tidak benar-benar mengerti mengapa, jangan khawatir, Anda masih dapat dengan mudah menggunakan kueri khusus. Kami akan fokus pada array $ args di seluruh pos yang akan sangat mudah.

Argumen sederhana

Seperti yang saya sebutkan, utama "tubuh pengetahuan" ketika datang ke WP_Query terletak pada argumennya. Itu Naskah kuno daftar semuanya, kami akan melihat yang paling berguna di sini.

Beberapa argumen cukup sederhana, seperti parameter tag atau tag_id. Yang pertama mengambil tag slug, yang kemudian tag id. Anda juga dapat memisahkan beberapa item dengan koma atau menggunakan id negatif untuk menunjukkan bahwa Anda ingin mengambil posting yang melakukannya tidak pasang tag khusus itu.

$ args = array (
‘post_type’ => ‘pos’,
‘tag_id’ => ’22, 92,44, -21 ‘
);
$ our_posts = WP_Query baru ($ args);

Cuplikan akan mengambil artikel yang memiliki salah satu dari tiga tag pertama yang menyertainya, tetapi tidak yang keempat. Meskipun sistem ini cukup kuat untuk kebutuhan sederhana, saya biasanya menggunakan kueri taksonomi yang jauh lebih fleksibel yang akan saya bahas sedikit kemudian.

Penulis, author_name, cat, category_name, s (untuk istilah pencarian), post_status, post_type adalah contoh dari beberapa bidang yang lebih sederhana. Perhatikan bahwa beberapa bidang, seperti post_status mengharuskan Anda untuk melewatkan array status jika Anda ingin menggunakan beberapa nilai.

$ args = array (
‘post_type’ => array (‘posting’, ‘halaman’),
‘post_status’ => array (‘draft’, ‘publish’),
‘kucing’ => ‘video musik’
);
$ our_posts = WP_Query baru ($ args);

Contoh di atas mengambil setiap posting yang merupakan halaman, posting; diterbitkan atau dalam status konsep dan ditetapkan kategori musik atau video. Ini dapat digunakan untuk menampilkan judul dari setiap konten saat ini atau yang direncanakan terkait dengan musik atau video.

Pertanyaan Taksonomi

Untuk hal-hal sederhana, menggunakan argumen yang disebutkan untuk mengambil posting berdasarkan kategori atau tag sudah cukup tetapi bagaimana jika Anda memiliki taksonomi kustom, atau Anda perlu menggabungkan beberapa parameter? Jawabannya terletak pada argumen tax_query yang merupakan array. Mari kita lihat contoh pertama.

$ args = array (
‘post_type’ => ‘Book’,
‘tax_query’ => Himpunan(
Himpunan(
‘taksonomi’ => ‘aliran’,
‘bidang’ => ‘siput’,
‘syarat’ => array (‘scifi’, ‘thriller’),
‘operator’ => ‘TIDAK MASUK’,
),
Himpunan(
‘taksonomi’ => ‘penulis’,
‘bidang’ => ‘Indo’,
‘syarat’ => array (92, 883, 399),
),
‘relation’ => ‘DAN’,
),
);
$ query = WP_Query baru ($ args);

Di sini kami mengambil beberapa posting dari jenis posting ‘buku’ kami, menambahkan beberapa parameter taksonomi. Menggunakan dua array yang didefinisikan dalam tax_query, kami telah menetapkan bahwa kami ingin menarik buku yang ditulis oleh penulis 92, 883 atau 399 yang merupakan tidak dalam genre sci-fi atau thriller. Parameter relasi menentukan hubungan antara dua array. Dalam kasus kami, ini adalah hubungan ‘dan’ yang berarti bahwa kedua kondisi tersebut harus dipenuhi.

Jika kami menggunakan ‘atau’, kami akan mengambil buku-buku yang tidak termasuk dalam kategori sci-fi atau thriller atau ditulis oleh tiga penulis yang ditentukan. Dalam bahasa Inggris sederhana ini berarti: Saya ingin melihat semua buku saya kecuali untuk genre sci-fi dan thriller. Namun, saya ingin melihat semua buku dari Terry Pratchett, Douglas Adams dan Stephen King, terlepas dari genre.

Pertanyaan Meta

Kueri meta sangat mirip dengan kueri taksonomi dalam struktur tetapi mereka menggunakan data dari tabel meta pos untuk menyaring kiriman. Kode di bawah ini akan menampilkan semua posting yang diterbitkan yang memiliki gambar unggulan.

$ args = array (
‘post_type’ => ‘pos’,
‘meta_query’ => Himpunan(
Himpunan(
‘key’ => ‘_thumbnail_id’,
‘value’ => ”,
‘bandingkan’ => ‘! =’,
),
),
);
$ query = WP_Query baru ($ args);

WordPress menyimpan ID gambar yang ditampilkan untuk posting menggunakan bidang _thumbnail_id. Jadi jika kita mengambil semua posting di mana nilai meta ini tidak kosong, kita harus berakhir dengan semua posting yang memiliki gambar unggulan.

Rahasianya di sini adalah mengetahui cara menggunakan properti dan jenis perbandingan. Anda dapat menggunakan banyak nilai yang harus familier dari SQL: ‘=’, ‘! =’, ‘>’,‘>= ’,‘<‘,‘<= ‘,’ LIKE ‘,’ NOT LIKE ‘,’ IN ‘,’ NOT IN ‘,’ BETWEEN ‘,’ NOT ANTARA ‘,’ EXISTS ‘(dari WordPress 3.5 dan lebih tinggi), dan’ NOT EXISTS ‘(dari WordPress 3.5 dan lebih tinggi)

Properti tipe biasanya penting ketika Anda ingin membandingkan angka atau tanggal. Nilai yang mungkin adalah ‘NUMERIK’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘DITANDATANGANI’, ‘TIME’, ‘UNSIGNED’. Ingatlah untuk menggunakan NUMERIC saat membandingkan angka, dalam kebanyakan kasus lain Anda harus baik-baik saja.

Sama seperti dengan kueri taksonomi Anda dapat menumpuk banyak persyaratan dan kemudian menggunakan parameter relasi untuk menentukan hubungan di antara mereka.

$ args = array (
‘post_type’ => ‘pos’,
‘meta_query’ => Himpunan(
‘relation’ => ‘ATAU’,
Himpunan(
‘key’ => ‘suasana hati’,
‘value’ => array (‘happy’, ‘awesome’),
‘bandingkan’ => ‘DI’,
),
Himpunan(
‘key’ => ‘pendapatan’,
‘value’ => 500,
‘bandingkan’ => ‘>’,
‘type’ => ‘NUMERIK’
),
),
);
$ query = WP_Query baru ($ args);

Contoh di atas akan menampilkan posting dari buku harian hipotetis di mana sesuatu yang baik terjadi. Saya merasa senang atau luar biasa atau menghasilkan lebih dari $ 500 hari itu.

Parameter Tanggal

Kurma bisa menjadi sedikit rumit, tetapi sangat fleksibel. Itu Dokumentasi WP_Query memiliki banyak contoh jika Anda memerlukan informasi lebih lanjut.

Mengambil posting dari waktu tertentu cukup mudah. Anda dapat menggunakan tahun, bulan, w (minggu dalam setahun), hari dan beberapa parameter lainnya untuk menentukan waktu. Kode di bawah ini akan mengambil semua posting dari Maret 2013.

$ args = array (
‘post_type’ => ‘pos’,
‘tahun’ => 2013,
‘bulan’ => 3
);
$ query = WP_Query baru ($ args);

Jika Anda ingin masuk ke rentang waktu yang lebih kompleks, Anda harus menggunakan date_query. Ini memungkinkan Anda untuk menentukan rentang sewenang-wenang dengan mudah, menggunakan format array yang sudah dikenal. Contoh berikut – milik Codex – menunjukkan bagaimana Anda dapat mengambil posting yang ditulis antara jam 9 pagi dan jam 5 sore pada hari kerja.

$ args = array (
‘post_type’ => ‘pos’,
‘date_query’ => Himpunan(
Himpunan(
‘jam’ => 9,
‘bandingkan’ => ‘>= ‘,
),
Himpunan(
‘jam’ => 17,
‘bandingkan’ => ‘<= ‘,
),
Himpunan(
‘dayofweek’ => array (2, 6),
‘bandingkan’ => ‘ANTARA’,
),
),
);
$ query = WP_Query baru ($ args);

Memesan Hasil

Urutan daftar disajikan sama pentingnya dengan elemen-elemen di dalamnya. Untungnya WordPress menawarkan parameter order_by dan order kepada kami. Parameter pesanan cukup mudah, Anda dapat menggunakan ASC atau DESC untuk memesan naik atau turun.

Parameter order_by dapat mengambil sejumlah nilai: ‘tidak ada’, ‘ID’, ‘penulis’, ‘judul’, ‘nama’, ‘tipe’, ‘tanggal’, ‘dimodifikasi’, ‘induk’, ‘rand’ , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. Memesan dengan meta_value bisa sangat berguna. Dalam hal ini, jangan lupa untuk menentukan bidang meta_key juga.

$ args = array (
‘post_type’ => ‘lukisan’,
‘meta_query’ => Himpunan(
Himpunan(
‘key’ => ‘harga’,
‘value’ => 50000,
‘bandingkan’ => ‘>’,
‘type’ => ‘NUMERIK’
),
),
‘order_by’ => ‘meta_value_num’,
‘meta_key’ => ‘harga’
);
$ query = WP_Query baru ($ args);

Contoh ini mengambil lukisan yang bernilai lebih dari $ 50,000 dan memesannya naik dengan harga. Perhatikan bahwa karena harga disimpan sebagai angka, saya menggunakan meta_value_num untuk memesan hasilnya, berbeda dengan meta_value yang akan digunakan untuk string.

Pemesanan lain yang layak disebut adalah post__in. Post__in ini adalah parameter dalam dirinya sendiri, ini memungkinkan Anda untuk menentukan array id posting untuk diambil. Secara default, WordPress memesan posting berdasarkan tanggal, pesanan yang Anda tentukan dalam post__in tidak dipertahankan. Jika Anda menggunakan post__in sebagai urutan berdasarkan nilai juga, WordPress akan mempertahankannya.

$ args = array (
‘post_type’ => ‘pos’,
‘post__in’ => array (23, 441, 12, 322, 34, 33),
‘order_by’ => ‘post__in’,
);
$ query = WP_Query baru ($ args);

Membungkus

Saya harap jelas dari pengantar WP_Query ini bahwa ini memang kelas yang kuat. Ini memungkinkan Anda untuk mengambil posting menggunakan kriteria Anda sendiri dengan cara WP-standar. Lihatlah itu dokumentasi untuk informasi lebih lanjut dan beberapa properti dan metode hebat yang ditawarkan kelas ini untuk memanipulasi kueri dan loop.

WP_Query adalah bagian dari apa yang menjadikan WordPress CMS umum yang hebat – kemampuan untuk mengambil objek dari basis data dengan cara yang modular dan dapat disesuaikan.

Jika Anda memiliki pertanyaan, beri tahu kami di komentar!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map