Term_id ve term_taxonomy_id arasındaki fark nedir


20

Başlık her şeyi söylüyor. Şu anda benim özel sınıflandırmalarda terimleri id ve sınıflandırma adını kullanarak alıyorum.

Bu sorunun daha önce sorulduğunu ama hiçbir yerde bulamayacağını düşündüm! Bu yüzden herhangi birinin cevabı olup olmadığını sorup göreceğimi düşündüm.

Yanıtlar:


21

Wordpress belgelerine bakarsanız, Wordpress Taksonomileri'ni bulacaksınız.

  • term_id , terimler tablosundaki bir terimin kimliğidir
  • term_taksonomy_id , + sınıflandırma çifti terimi için benzersiz bir kimliktir.

öyleyse terimleri yalnızca term_id'e dayanarak değiştirmek ve tutmak, kopyalara neden olmaz mı?
Daithí

1
aslında son soruyu yanıtladı. Wp_terms tabloya bir göz vardı ve sadece term_id kullanarak yep güvenlidir. Cevabınız için teşekkürler @Juan
Daithí

2
WordPress 4.2'de tüm terimlerin bölündüğünü , yani her birinin term_idartık term_taxonomytabloda yalnızca bir kez gerçekleşeceğini (sütun benzersiz olmadığından ve terimlerin taksonomiler arasında paylaşılabileceğinden) olduğuna dikkat edin. Bu, taksonomi yol haritasına bağlı olarak gelecekte de gelişmeye devam edebilir . Bunun bir kısmı , terim ve terim sınıflandırma tablolarını birleştirmektir .
JD

11

Kodeks diyor ki:

  • term_id, terimler tablosundaki bir terimin kimliğidir
  • term_taksonomy_id, + sınıflandırma çifti terimi için benzersiz bir kimliktir

Ne anlama geliyor?

Terim bir kelimedir. Etiketler, kategoriler veya özel bir sınıflandırma gibi bir sınıflandırmaya ait olabilir. Mesele şu: aynı terimi içeren birkaç taksonomi olabilir.

Diyelim ki “besi” diye bir terim var. Bu kelimenin bir kimlik numarası var. Bu terim_kimliği. Bu kelimenin nasıl kullanıldığı, yani terimin hangi sınıflandırmalarda göründüğüne bağlı değildir.

Şimdi bir yazı etiketi olarak “besi” kelimesinin de bir numarası var. Bu terim_taksonomi_kimliği. “Posta etiketi 'besi” ye karşılık gelir.

Belki de “besi” diye bir kategoriniz var. "İd" terimi aynı olmakla birlikte, "besi" kategorisi için taksonomi_id terimi farklıdır.


5

Bu tasarımın daha büyük bir anlayışının bir parçası olduğu için onu bütün olarak anlatacağım ... :)

WP 4.5.3'te hala tüm bu tablolar var ( önek olmadan onlar hakkında konuşacağım ):

  • Mesajları
  • term_relationships
  • term_taxonomy
  • şartlar

Gönderi terimlerinin okunabilir adlarını alma yolu hepsinden geçer.

nakleder
burada ana tanımlayıcıyla olan ID(her türlü) bir yazının bir kimlik -

term_relationships
saklar çiftleri:
object_id- edebilirsiniz olmak posts.ID(ancak yok değil olmak zorunda)
term_taxonomy_id- bu DEĞİL bir terim (kategorinin) kimliği ancak kimliği İLİŞKİ bir terim (kategori) ve taksonomisinde arasında ( "kategorisinde türü")

term_taksonomi Buradaki
ana tanımlayıcı term_taxonomy_idyukarıda açıklanmıştır ^^
başka bir önemli sütun:
term_id- bir terimin kimliği (kategori)
taxonomy- terimin taksonomisini saklar ("kategori türü")

Bu komik görünebilir, ancak ilk amaç, terimlerin daha fazla taksonomiye sahip olma kabiliyetini eklemekti ( bazı durumlarda mantıklı olabilir).

terimleri
burada ana tanımlayıcı term_id- bir kategorinin kimliği
başka bir önemli sütun burada:
name- okunabilir kategori adı örneğin "Müzik Türleri"
slug- örneğin URL'de kullanılabilir bir terimin bilgi

Yani acımasız
yayınlanan tüm yayınları ve kategorilerinin adlarıyla birlikte tüm kategorilerini almak için SQL'i gösteren
olabilir (kendi WP DB'nizde test yaparken tablolara önek ekleyin):

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

2

Terim tek başına bir kategori veya etiket değildir. Terim_taksonomi tablosu üzerinden bağlam verilmelidir.

Terim_taksonomi tablosu, bir terimi bir sınıflandırma içine yerleştirir. Bir terimi kategori yapan şey budur , bir etiket veya özel bir sınıflandırma (veya sınıflandırmaların bir kombinasyonu halinde) yapan şey budur.

term_id , terimler tablosundaki bir terimin kimliğidir.

term_taxonomy_id + sınıflandırma çifti terimi için benzersiz bir kimliktir.

Her term_idzaman tıpkıterm_taxonomy_id . Her ikisinin Auto Incrementde tablo yapısı vardır.

Masa wp_term_taxonomywordpress o örn WooCommerce kullanımlarına müdahale böylece, emin bir kategori oluşturulduğunu örneğin yapar: product_tag, product_type, product_cat, hepsi sözde özel taksonomilerin vardır. Bu tablo ebeveyn / çocuk yapısını da bağlar. Bu sütun ileparent .

Son tablo olan term_relationships, term_taksonomy tablosundan yayınlar veya term_taxonomy_id'e bağlantı gibi nesneler ile ilgilidir.

Woocommerce'i örnek olarak tekrar seçersek, bu tablo yazı türünü productssınıflandırmalarına bağlar, bu da tablodan product_catalınan Bilgisayarlar gibi bir ad içerir wp_terms. Bu tablo içeren term_id, name, slugveterm_group . (kişisel olarak hiç kullanmadığım term_group)

Umarım yukarıdakiler, farklılıklar ve Wordpress'in bu tabloları nasıl kullandığı hakkında işleri biraz daha açık hale getirir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.