get_terms - hanya tingkat atas

13

Saya hanya mencoba mendapatkan istilah tingkat atas:

$cat_args = array(
    'parent '       => 0,
    'number'        => 10,
    'hide_empty'    => false,           
);

$categories = get_terms( 'question_category' , $cat_args); 

Tapi kueri ini mengembalikan semua childterms juga, saya mencoba segalanya tetapi selalu mendapatkan istilah child.

Saya mencoba sejak 5 jam terakhir dan tidak dapat menemukan apa yang salah dalam kode saya, apakah ini bug WP atau ada yang salah dalam kode saya?

Terima kasih telah membantu.

Arya
sumber
Saya pikir maksud Anda hanya istilah tingkat atas dari taksonomi Andaquestion_category
Pieter Goosen
Ya maksud saya itu
Arya

Jawaban:

21

Kode Anda benar, hampir juga benar. Pada pandangan pertama, saya harus akui, saya juga melewatkannya.

Anda memiliki dua kesalahan sintaksis dalam kode Anda. Jika Anda melihat dari dekat, 'parent 'dan 'parent'tidak sama. Anda tidak boleh meninggalkan ruang kosong antara tanda kutip tunggal ( ') dan argumen.

Juga, Anda tidak perlu menambahkan ,setelah argumen terakhir Anda.

Ini seharusnya bekerja

$cat_args = array(
    'parent'        => 0,
    'number'        => 10,
    'hide_empty'    => false           
);

EDIT 15-06-2016

Seperti dari WordPress 4.5, sintaks telah berubah untuk get_terms(). The taxonomyparameter sekarang termasuk dalam array atau args, sehingga penggunaan baru akan terlihat seperti ini

$args = [
    'taxonomy'     => 'my_tax',
    'parent'        => 0,
    'number'        => 10,
    'hide_empty'    => false           
];
$terms = get_terms( $args );
Pieter Goosen
sumber
2
Hanya sebuah catatan: Anda tidak perlu menambahkan ,setelah argumen array terakhir, NAMUN, itu adalah praktik yang baik untuk melakukannya ;)
jave.web
@ jave.web Terima kasih untuk itu, saya tahu itu, saya hanya tidak selalu melakukan itu. ;-)
Pieter Goosen
@ jave.web Ini sebenarnya bukan praktik yang baik untuk menambahkan ,setelah argumen array terakhir, karena ini akan memecah bahasa lain yang tidak toleran terhadap koma berlebihan. Misalnya. JSON akan rusak jika Anda melakukan ini.
Mikepote
2
@Mikepote yang sebenarnya tidak benar, ini adalah praktik yang baik dan jika Anda mencoba untuk memindahkan kode dari satu bahasa ke bahasa lain, Anda harus menggunakan konversi / ter yang tepat. Ini seperti mengatakan Anda tidak dapat memiliki kreasi objek dan / atau variabel sebagai argumen, karena jika Anda menyalin / menempelkannya merusak JSON ... Ini adalah praktik yang baik bahkan dalam JavaScript, oleh karena itu dukungan ditambahkan kemudian di mana-mana. Menyalin / menempel di dalam bahasa dan proyek yang sama jauh lebih mungkin dan menambahkan koma jika memungkinkan mencegah slow-downers umum - yang tidak hanya dari pengalaman saya, tetapi juga dari pengalaman orang lain.
jave.web
@Mikepote Untuk memahami apa yang dikatakan jave.web, ini bukan hanya praktik yang baik tetapi secara khusus direkomendasikan dalam Standar Pengodean PHP WordPress, yang idealnya semua kode khusus WordPress harus mengikuti: make.wordpress.org/core/handbook/best- praktik / ...
Sarah Lewis