Saya tidak dapat menemukan cara yang tepat untuk mendapatkan daftar semua produk untuk ID kategori tertentu (bukan nama kategori).
Kode yang saya gunakan untuk mendapatkan daftar kategori adalah sebagai berikut, berfungsi dengan baik:
$args = array(
'orderby' => $orderby,
'order' => $order,
'hide_empty' => 0,
'include' => $ids,
'parent' => 0,
);
$categories = get_terms( 'product_cat', $args );
Namun, sekarang untuk ID kategori tertentu (katakanlah 47), saya tidak bisa menemukan cara untuk mendapatkan produk yang relevan. Saya mencoba cara berikut:
$args = array(
'posts_per_page' => 5,
'offset'=> 1,
'category' => 47
);
$products = get_posts( $args );
echo var_dump($products);
Debugging $products
array mengembalikan selalu 0 yang salah karena saya tahu ada beberapa produk di bawah kategori dengan ID 47. Ada ide bagaimana cara memperbaiki kode saya?
woocommerce
Malloc
sumber
sumber
category
atauproduct_category
?Jawaban:
Saya menduga masalah utama adalah bahwa Anda harus menggunakan
WP_Query
objek daripadaget_posts()
. Nanti secara default hanya mengembalikan item dengan post_typepost
bukan produk,Jadi dengan kategori ID 26, kode berikut akan mengembalikan produknya (WooCommerce 3+):
Dalam versi WooCommerce sebelumnya, visibilitas disimpan sebagai bidang meta, jadi kodenya adalah:
Di sini kami hanya mengembalikan produk yang terlihat, 12 per halaman.
Lihat http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters untuk rincian lebih lanjut tentang cara kerja penargetan kategori - seringkali lebih bermanfaat untuk mengambilnya dengan slug daripada dengan ID!
sumber
get_posts()
itu salah. Anda dapat menggantinew WP_Query($args)
denganget_posts($args)
dalam kode Anda dan itu akan berfungsi.ganti kategori (kategori-slug-nama) dengan id atau nama atau siput
sumber
Sedikit terlambat, tetapi ingin mengklarifikasi hal-hal dan memberikan jawaban yang lebih bersih. Pengguna @ benz001 memberikan jawaban yang valid yang mungkin, tetapi mengatakan sesuatu yang salah:
get_posts
mengembalikan semua jenis postingan, default keposts
post-type, sama sepertiWP_Query
. Perbedaan nyata antara keduanya dijelaskan dengan HERE .Faktanya adalah, OP hanya melewatkan beberapa parameter ke dalam
$args
array:Definisi tipe post yang ia cari:
Dan modifikasi "bagian taksonomi" dari permintaan pencarian:
Dengan cara ini, baris Anda berikutnya
Akan menunjukkan kepada Anda produk yang dibutuhkan :)
Semua parameter tambahan lainnya yang ditunjukkan oleh @ benz001 tentu saja valid tetapi tidak diminta oleh OP, jadi saya memutuskan untuk meninggalkannya di jawaban ini.
sumber
sumber