Mengapa get_term () memerlukan taksonomi? Apakah term_ids tidak unik?

8

Pertanyaan WPSE terkait menanyakan cara mendapatkan istilah dengan menentukan ID saja, tanpa menentukan taksonomi. Pertanyaan saya lebih filosofis. Secara umum, hal-hal di WP core ada karena suatu alasan. Saya mencoba memahami mengapa term_id tidak bisa menjadi kunci utama untuk istilah tersebut - mengapa kita perlu taksonomi juga? Dapatkah catatan satu periode menjadi anggota dari beberapa taksonomi? Itu tentu saja saat ini tidak didukung di API. Apakah ada kasus penggunaan di mana ini mungkin diinginkan?

Atau apakah $taxonomyparameter yang diperlukan dalam get_term()ekor vestigial dari inkarnasi sebelumnya dari struktur database?

Tom Auger
sumber
3
Saya tidak sepenuhnya yakin tetapi saya pikir lebih merupakan masalah kinerja karena bidang taksonomi wp_term_taxonomytabel digunakan sebagai indeks untuk tabel itu, yang membuat kueri lebih cepat (bahkan jika itu hanya istilah).
Bainternet
@Bainternet Silakan lihat bagian akhir EXPLAINkata A. saya term_id.
kaiser
1
Saya pikir itu adalah sisa ekor. Mencatat
Tom Auger

Jawaban:

3

Saya telah mencatat tiket dengan trac: http://core.trac.wordpress.org/ticket/20536

Namun, ternyata untuk saat ini IS diperlukan, karena WordPress saat ini (sejak 2.x) memiliki bug yang TIDAK mengaitkan dua istilah dengan nama yang sama ke term_id yang sama! Jadi itu mungkin (meskipun salah) untuk satu istilah untuk dikaitkan dengan lebih dari satu taksonomi. Lihat bug ini: http://core.trac.wordpress.org/ticket/5809

Ini cukup luas sehingga menerapkan perbaikan perlu diuji unit secara menyeluruh. Saya akan mencoba untuk mengingat untuk memperbarui pertanyaan ini jika ada perkembangan.

Tom Auger
sumber
Ini kasusnya PASTI ! Bug ini menggigit saya pada instalasi multisite besar (beberapa ratus) ... Sangat aneh. DAN perhatikan bahwa bug tersebut berusia 5 tahun ... Namun, patch dijadwalkan untuk dimasukkan dalam rilis 3.6, jadi ini mungkin benar-benar diperbaiki! (Akhirnya! :))
rinogo
Terima kasih telah memperbarui pertanyaan ini untuk memilih jawaban yang benar, Tom! Semoga ini akan membantu mereka yang mendarat di pertanyaan ini di masa depan. Dan terima kasih atas jawaban / tautannya. Sangat membantu.
rinogo
1
Pengingat untuk memperbarui pertanyaan ini - btw, bukankah ada sesuatu dengan istilah alias ?
kaiser
Hai @iser, perbarui dengan apa? Saya tidak yakin bahwa telah ada gerakan positif lebih lanjut menuju penyelesaian masalah Trac yang disebutkan.
Tom Auger
Saat ini targetnya ditetapkan ke 3.7-awal . Mari lihat apa yang terjadi. Apa yang hilang? Tidak bisa mengikuti di akhir karena ada unit test dari apa yang saya baca.
kaiser
1

mengapa kita membutuhkan taksonomi juga? Dapatkah catatan satu periode menjadi anggota dari beberapa taksonomi?

Tidak. Persyaratan memiliki siput untuk mendukung arsip istilah. Dan memiliki siput dua kali menampilkan banyak minetraps atau "wontfix" dalam beberapa skenario permalink.

Apakah ada kasus penggunaan di mana ini mungkin diinginkan?

Ya: Bayangkan bahwa Anda memiliki istilah untuk mis sizedan memiliki tiga taksonomi yang dinamai length, width dan height(Anda juga bisa memikirkan warna). Tapi itu tidak didukung karena alasan yang tertulis di atas.

Secara umum, hal-hal di WP core ada karena suatu alasan. Saya mencoba memahami mengapa term_id tidak bisa menjadi kunci utama untuk istilah tersebut - mengapa kita perlu taksonomi juga?

Dari melihat tabel dan menjalankan EXPLAIN, term_id adalah kunci utama. Saya kira pada sistem yang lebih besar mungkin lebih cepat untuk hanya meminta istilah taksonomi tertentu menggunakan gabungan (lambat) dari pada meminta semua, mengurutkannya dan memfilter apa yang Anda butuhkan.

kaisar
sumber
Dari bunyi hal-hal itu, entah itu ada kesalahan (mungkin tersisa dari skema sebelumnya) atau ada untuk beberapa kasus di masa depan di mana Anda mungkin memiliki siput duplikat (tidak mungkin). Bagaimanapun, saya tidak yakin Anda menjawab pertanyaan saya.
Tom Auger
@ TomAuger "Apakah ada kasus penggunaan di mana ini mungkin diinginkan": Ya. Namun bobot kontra lebih banyak. Suatu istilah dalam pajak A dapat memiliki nama yang sama dengan yang ada di pajak B, tetapi artinya berbeda misalnya. Jadi, jika Anda menanyakan "bobot" dalam taksonomi "kepentingan" dan "biaya pengiriman", apa yang akan "sangat berat" kemudian muncul?
kaiser
Ya, tetapi di sini kita berbicara tentang ID istilah, bukan istilah NAME. ID sudah sepenuhnya mencabut istilah dari istilah lain apa pun (dalam taksonomi apa pun) yang mungkin memiliki nama yang sama. Perhatikan bahwa ini bukan pertanyaan Basis Data dan lebih banyak tentang mengapa dibiarkan dalam kode inti.
Tom Auger
@ TomAuger Akan lebih mudah jika Anda mengikuti Q ini pada akhir Desember. Saya sekarang akan bekerja lagi dalam hal ini: /
kaiser