Apa perbedaan antara term_id dan term_taxonomy_id

20

Judulnya mengatakan itu semua. Saat ini di taksonomi kustom saya, saya mendapatkan istilah menggunakan id istilah dan nama taksonomi.

Kupikir pertanyaan ini akan ditanyakan sebelumnya tetapi tidak dapat menemukannya di mana pun! Jadi saya pikir saya akan bertanya dan melihat apakah ada yang punya jawaban.

Daithí
sumber

Jawaban:

21

Jika Anda melihat ke dalam dokumentasi Wordpress Anda akan menemukan Taksonomi Wordpress

  • term_id adalah ID suatu istilah dalam tabel syarat
  • term_taxonomy_id adalah ID unik untuk pasangan term + taksonomi.
Juan Ramón
sumber
jadi memanipulasi dan mengambil istilah hanya berdasarkan term_id tidak akan menyebabkan duplikat?
Daithí
1
sebenarnya hanya menjawab pertanyaan terakhir itu. Telah melihat tabel wp_terms dan ya menggunakan term_id saja aman. Terima kasih atas balasan Anda @Juan
Daithí
2
Hanya perhatikan bahwa di WordPress 4.2 semua istilah terpecah , artinya masing-masing term_idsekarang akan muncul hanya sekali dalam term_taxonomytabel (sebelum kolom tidak unik dan istilah dapat dibagi di taksonomi). Ini dapat terus berkembang di masa depan, berdasarkan peta jalan taksonomi . Salah satu bagian dari itu adalah untuk menggabungkan istilah dan tabel taksonomi istilah .
JD
11

Codex mengatakan:

  • term_id adalah ID dari sebuah istilah dalam tabel syarat
  • term_taxonomy_id adalah ID unik untuk pasangan term + taksonomi

Apa artinya ini?

Sebuah istilah adalah sebuah kata. Itu bisa milik taksonomi, seperti tag, kategori, atau taksonomi kustom. Masalahnya adalah: ada beberapa taksonomi yang mengandung istilah yang sama.

Katakanlah Anda memiliki istilah yang disebut "penggemukan". Kata ini memiliki nomor id. Ini adalah term_id. Itu tidak tergantung pada bagaimana kata ini digunakan, yaitu di mana taksonomi istilah muncul.

Sekarang kata "penggemukan" sebagai tag posting juga memiliki nomor. Ini adalah term_taxonomy_id. Ini sesuai dengan "tag pos 'penggemukan'".

Mungkin Anda juga memiliki kategori yang disebut "penggemukan". Sementara term_id adalah sama, term_taxonomy_id untuk “kategori 'penggemukan'” berbeda.

Ken.shinde
sumber
5

Karena ini adalah bagian dari pemahaman yang lebih besar tentang desain, saya akan menggambarkannya secara keseluruhan ... :)

Di WP 4.5.3 masih ada semua tabel ini (saya akan membicarakannya tanpa awalan):

  • posting
  • term_relationships
  • term_taxonomy
  • ketentuan

Jalur untuk mendapatkan nama yang dapat dibaca istilah pos melewati semua itu.

memposting
pengidentifikasi utama di sini adalah ID- id dari suatu posting (dari jenis apa pun)

term_relationships
toko pasang:
object_id- bisa menjadi posts.ID(tetapi tidak tidak harus)
term_taxonomy_id- ini adalah TIDAK id dari istilah (kategori) tapi id dari HUBUNGAN antara istilah (kategori) dan taksonomi ( "kategori tipe")

term_taxonomy
pengidentifikasi utama di sini digambarkan di term_taxonomy_idatas ^^
kolom penting lainnya:
term_id- id istilah (kategori)
taxonomy- menyimpan taksonomi istilah ("tipe kategori")

Yang ini mungkin tampak lucu, tetapi niat awalnya adalah untuk menambahkan kemampuan istilah untuk memiliki lebih banyak taksonomi (yang dalam beberapa kasus masuk akal).

istilah
pengidentifikasi utama di sini adalah term_id- id suatu kategori
kolom penting lainnya di sini adalah:
name- nama kategori yang dapat dibaca misalnya "Genre Musik"
slug- slug dari istilah yang dapat digunakan misalnya dalam URL

Jadi SQL brutal yang mendemonstrasikan untuk
mendapatkan semua posting yang dipublikasikan dan semua kategorinya dengan nama kategorinya
dapat terlihat seperti ini (tambahkan awalan ke tabel saat menguji WP DB Anda sendiri):

SELECT * FROM
posts #gets posts
LEFT JOIN
term_relationships #gets posts relationships to term_taxonomies
ON(posts.ID=term_relationships.object_id)
LEFT JOIN
term_taxonomy #gets term_ids 
ON(term_relationships.term_taxonomy_id=term_taxonomy.term_taxonomy_id)
LEFT JOIN
terms #finally, gets terms' names
ON(term_taxonomy.term_id=terms.term_id)
WHERE (
    (posts.post_status='publish') 
    #optionally you can filter by a certain post_type:
    #AND
    #(posts.post_type='some_post_type')
)
ORDER BY posts.ID ASC
jave.web
sumber
2

Suatu istilah bukanlah suatu kategori atau tanda tersendiri. Itu harus diberikan konteks melalui tabel term_taxonomy.

Tabel term_taxonomy menempatkan istilah dalam taksonomi. Inilah yang menjadikan istilah kategori , tag atau bagian dari taksonomi khusus (atau dalam kombinasi taksonomi).

term_id adalah ID suatu istilah dalam tabel syarat.

term_taxonomy_id adalah ID unik untuk pasangan term + taksonomi.

Itu term_idselalu unik seperti term_taxonomy_id. Keduanya memiliki Auto Incrementstruktur tabel.

Tabel wp_term_taxonomymemastikan misalnya bahwa kategori dibuat, sehingga wordpress bisa mengganggu itu misalnya Woocommerce penggunaan: product_tag, product_type, product_cat, semua dari mereka adalah yang disebut taksonomi kustom. Tabel ini juga mengikat struktur orangtua / anak. Dengan kolom itu parent.

Tabel terakhir, term_relationships, menghubungkan objek seperti posting atau tautan ke term_taxonomy_id dari tabel term_taxonomy.

Jika kita memilih Woocommerce lagi sebagai contoh, tabel ini menautkan jenis posting productske taksonomi mereka product_cat, yang berisi namy misalnya Komputer yang tentu saja diambil dari tabel wp_terms. Tabel ini berisi term_id, name, slugdan term_group. (term_group yang saya pribadi tidak pernah gunakan)

Semoga hal di atas membuat hal-hal sedikit lebih jelas tentang perbedaan dan bagaimana Wordpress menggunakan tabel ini.

Rens Tillmann
sumber