Яка різниця між term_id та term_taxonomy_id


20

У заголовку все сказано. Наразі в моїй спеціальній таксономії я отримую терміни, використовуючи термін id та ім'я таксономії.

Думав, що це питання було б задано раніше, але його не можна знайти ніде! Тому просто подумав, що я запитаю і подивлюсь, чи є хто-небудь відповіді.

Відповіді:


21

Якщо ви заглянете в документацію Wordpress, ви знайдете таксономії Wordpress

  • term_id - ідентифікатор терміна в таблиці термінів
  • term_taxonomy_id - це унікальний ідентифікатор для пари терміна + таксономічна пара.

тож маніпулювання та захоплення термінів, що базуються лише на терміні_id, не викликало б тоді дублікатів?
Даїті

1
насправді просто відповів на це останнє запитання. Подивився таблицю wp_terms і так, тільки використовуючи термін_id, це безпечно. Дякуємо за вашу відповідь @Juan
Daithí

2
Лише зауважте, що в WordPress 4.2 усі терміни були розділені , це означає, що кожен term_idз них буде відбуватися лише один раз у term_taxonomyтаблиці (до того, як стовпець не був унікальним і терміни можна було поділити між таксономіями). Це може продовжуватись розвиватися в майбутньому на основі дорожньої карти таксономії . Однією з частин цього є поєднання термінів та термінів таблиць таксономії .
JD

11

Кодекс говорить:

  • term_id - ідентифікатор терміна в таблиці термінів
  • term_taxonomy_id - це унікальний ідентифікатор для пари терміна + таксономічна пара

Що це означає?

Термін - це слово. Він може належати до систематики, наприклад тегів, категорій або власної систематики. Річ у тім: може бути кілька таксономій, що містять один і той же термін.

Скажімо, у вас є термін під назвою "відгодівля". Це слово має ідентифікаційний номер. Це термін_id. Це не залежить від того, як це слово використовується, тобто в яких таксономіях з’являється цей термін.

Тепер слово "відгодівля" як тег пошти також має число. Це термін_таксономія_id. Він відповідає "поштовому тегу" відгодівля "".

Можливо, у вас також є категорія, яка називається "відгодівля". Хоча термін_id однаковий, термін_taxonomy_id для "категорії" відгодівля "відрізняється.


5

Оскільки це частина більшого розуміння дизайну, я опишу його як ціле ... :)

У WP 4.5.3 ще є всі ці таблиці (я буду говорити про них без префікса):

  • дописів
  • term_relationships
  • термін_таксономія
  • умови

Шлях до отримання читаних імен пост-термінів проходить через них усі.

публікації,
головний ідентифікатор тут ID- ідентифікатор допису (будь-якого типу)

term_relationships
зберігає пари:
object_id- може бути posts.ID(але не може) повинно бути)
term_taxonomy_id- це НЕ ідентифікатор терміна (категорії), а ідентифікація ВІДНОСНЕННЯ між терміном (категорією) та систематикою ("категорія типу")

Термін_таксономія,
головний ідентифікатор тутterm_taxonomy_id описаний вище ^^
інших важливих стовпців:
term_id- ідентифікатор терміна (категорії)
taxonomy- зберігає таксономію терміна ("тип категорії")

Це може здатися смішним, але початковий намір полягав у тому, щоб додати можливість термінам мати більше таксономій (що в деяких випадках може мати сенс).

умови
головним ідентифікатором тут є term_id- ідентифікатор категорії, серед яких
важливі стовпці:
name- читабельна назва категорії, напр., "Музичні жанри"
slug- слуп терміна, який можна використовувати, наприклад, в URL

Тож жорстока демонстрація SQL для
отримання всіх опублікованих публікацій та всіх їх категорій із іменами категорій
може виглядати так (додайте префікси до таблиць під час тестування на власному WP БД):

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

Термін не є категорією чи тегом самостійно. Він повинен бути заданий контекстом через таблицю терміна_таксономія.

Таблиця term_taxonomy розміщує термін в межах таксономії. Це те, що робить термін категорією , тегом або частиною а власної систематики (або в поєднанні таксономій).

term_id ідентифікатор терміна в таблиці термінів.

term_taxonomy_id є унікальним ідентифікатором для пари терміна + таксономічна пара.

Це term_idзавжди унікальний, як і term_taxonomy_id. Обидва мають Auto Incrementструктуру таблиці.

У таблиці wp_term_taxonomyпереконується, наприклад , що категорія створюється, тому WordPress можуть взаємодіяти з ним , наприклад , WooCommerce використання: product_tag, product_type, product_cat, всі вони є так звані призначені для користувача таксономії. Ця таблиця також пов'язує структуру батьків / дітей. З його стовпцем parent.

Підсумкова таблиця, термін_взаємозв'язок, стосується об'єктів, таких як повідомлення або посилання на термін_таксономія_іда з таблиці терміна_таксономії.

Якщо ми знову підберемо Woocommerce, ця таблиця посилає тип публікації productsна їхню систематику product_cat, яка містить найменування, наприклад, Комп'ютери, які, звичайно, витягуються з таблиці wp_terms. Ця таблиця містить term_id, name, slugі term_group. (term_group я особисто ніколи не використовував)

Сподіваємось, вищесказане робить дещо зрозумілішими відмінності та те, як Wordpress використовує ці таблиці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.