✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Таксономії WordPress: терміни, батьки, діти

26

Здається, програмне створення таксономій — це питання, яке час від часу виникає для тих, хто створює рішення для інших на WordPress.

Самі таксономії можуть бути навіть трохи заплутаними; однак я виявив, що наступне зазвичай допомагає трохи зміцнити концепцію:

Ієрархічні таксономії аналогічні категоріям; неієрархічні таксономії аналогічні тегам.

Але все ж, припустімо, що ви створюєте рішення для когось, таке, що вам потрібно імпортувати інформацію як публікацію та застосувати до неї таксономію. Крім того, можливо, ви також захочете застосувати батьківську таксономію до публікації.

Як ми можемо це зробити?

Таксономії WordPress: реєстрація, батьки, діти тощо

Ситуація приблизно така:

У вас є посада, до якої буде застосовано таксономію. Якщо таксономія має батька, ми також хочемо застосувати його до публікації.

Для цього нам знадобляться чотири (можливо, п’ять) функції:

  1. реєстр_таксономії
  2. wp_insert_term
  3. get_term_by
  4. wp_set_object_terms

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

1 Зареєструйте таксономію

Для цього прикладу ми збираємося створити таксономію для спеціального типу публікації.

Оскільки це може бути будь-що, над чим ви працюєте, я збираюся використовувати змінну під назвою $postType, щоб продемонструвати цю думку.

<?php

register_taxonomy(
  'acme-category',
  $postType,
  [
      'label' => 'Acme Categories',
      'rewrite' => ['slug' => 'acme-category'],
      'capabilities' => [
          'manage_terms' => 'manage_options',
          'edit_terms' => 'manage_options',
          'delete_terms' => 'manage_options',
          'assign_terms' => 'manage_options',
      ],
      'hierarchical' => true,
  ]
);

Це досить просто, але візьміть до уваги посилання на код :

Проста функція для створення або модифікації об’єкта таксономії на основі наданих параметрів. Якщо ви змінюєте існуючий об’єкт таксономії, зауважте, що $object_typeзначення з початкової реєстрації буде перезаписано.

Загалом це не проблема, але якщо ви працюєте над великою програмою або вже існуючою програмою, про це слід пам’ятати.

2 Вставте термін для таксономії

Далі припустімо, що $customPost доступний для вас і має функцію для отримання свого імені, заголовка або іншої властивості, яка використовується для його ідентифікації (окрім ідентифікатора).

Це можна передати у функцію або зробити доступним через будь-яке використання інших функцій, які надає WordPress. У цьому прикладі я збираюся використовувати функцію getName() для об’єкта $customPost .

<?php

$termInfo = wp_insert_term(
  $customPost->getName(),
  'acme-category',
  ['slug' => sanitize_title_with_dashes($customPost->getName())]
);

Зверніть увагу, що я також читаю результат функції в  змінну $termInfo. Ми використаємо це на наступному кроці, щоб знайти батьківський елемент, якщо він існує, а також застосувати його до нашого спеціального об’єкта публікації.

3 Знайдіть батьківський елемент

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

Таксономії WordPress: терміни, батьки, діти

З цією метою ви захочете додати умову до свого коду, щоб створити його, якщо це необхідно. Щоб зберегти стислість коду, я пропускаю його в наступному коді :

<?php

$parentTermInfo = get_term_by(
  'term_taxonomy_id',
  $termInfo['term_taxonomy_id'],
  'acme-category',
  ARRAY_A
);

Зверніть увагу, що я зберігаю результат коду вище в  змінній $parentTermInfo. Це для того, щоб ми могли передати це нашій остаточній функції для застосування батьківської інформації до нашого об’єкта публікації.

4 Застосуйте термін до публікації

Нарешті, ми застосуємо термін (або терміни), якщо є батьківський об’єкт. Пам’ятайте, що саме тут знадобиться умовний спосіб. Простіше кажучи, якщо батьківського елемента немає, значення $parentTermInfo[‘parent’] не знадобиться.

Таксономії WordPress: терміни, батьки, діти

Але для наведеного нижче коду ми припускаємо, що він у нас є.

<?php

wp_set_object_terms(
  $customPost->getId(),
  [
      $parentTermInfo['parent'],
      $termInfo['term_id'],
  ],
  'acme-category',
  true
);

З посилання на код зауважте, що це створить термін, якщо він ще не існує; інакше він використає те, що вже визначено, і застосує його до публікації.

І готово

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

Але, сподіваюся, посилання та код вище нададуть вам усе, що вам потрібно для створення таксономії та застосування її до публікації (а також батьківського терміну, якщо потрібно).

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі