✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Taksonomie WordPress: warunki, rodzice, dzieci

15

Programowe tworzenie taksonomii wydaje się być kwestią, która pojawia się od czasu do czasu dla tych, którzy budują rozwiązania dla innych na WordPress.

Same taksonomie mogą być nawet nieco mylące; jednak odkryłem, że następujące elementy zwykle pomagają nieco utrwalić tę koncepcję:

Taksonomie hierarchiczne są analogiczne do kategorii; taksonomie niehierarchiczne są analogiczne do tagów.

Załóżmy jednak, że tworzysz rozwiązanie dla kogoś, w którym musisz zaimportować informacje jako post i zastosować do nich taksonomię. Co więcej, być może chcesz również zastosować do postu taksonomię nadrzędną.

Jak możemy to zrobić?

Taksonomie WordPress: rejestracja, rodzice, dzieci i inne

Sytuacja wygląda mniej więcej tak:

Masz stanowisko, do którego zostanie zastosowana taksonomia. Jeśli taksonomia ma rodzica, chcemy ją również zastosować do stanowiska.

Aby to zrobić, potrzebujemy czterech (może pięciu) funkcji:

  1. rejestr_taksonomii
  2. wp_insert_term
  3. get_term_by
  4. wp_set_object_terms

Dodam również, że myślę, że dobrym pomysłem jest użycie sanitize_title_with_dashs, jeśli zamierzasz używać jakiegoś rodzaju nieoczyszczonego, przychodzącego ciągu dla ślimaka typu post (ale nie jest to konieczne, jeśli nie jesteś, oczywiście ).

1 Zarejestruj taksonomię

W tym przykładzie utworzymy taksonomię dla niestandardowego typu postu.

Ponieważ może to być wszystko, nad czym pracujesz, użyję zmiennej o nazwie $postType, aby zademonstrować punkt.

<?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,
  ]
);

To dość proste, ale weź notatkę z odniesienia do kodu :

Prosta funkcja do tworzenia lub modyfikowania obiektu taksonomii na podstawie podanych parametrów. Jeśli modyfikujesz istniejący obiekt taksonomii, zauważ, że $object_typewartość z oryginalnej rejestracji zostanie nadpisana.

Ogólnie rzecz biorąc, nie stanowi to problemu, ale jeśli pracujesz nad dużą aplikacją lub już istniejącą aplikacją, należy o tym pamiętać.

2 Wstaw termin do taksonomii

Następnie załóżmy, że $customPost jest dostępny dla Ciebie i ma funkcję do pobierania jego nazwy, tytułu lub innej właściwości używanej do jego identyfikacji (innej niż jego identyfikator).

Może to zostać przekazane do funkcji lub może zostać udostępnione poprzez dowolne użycie innych funkcji zapewnianych przez WordPress. W tym przykładzie użyję funkcji getName() na obiekcie customPost .

<?php

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

Zauważ, że odczytuję również wynik funkcji do  zmiennej $termInfo. Użyjemy tego w następnym kroku, aby wyszukać rodzica, jeśli istnieje, a także zastosować go do naszego niestandardowego obiektu post.

3 Wyszukaj rodzica semestru

Tutaj użyjemy terminu, który właśnie stworzyliśmy, aby sprawdzić, czy istnieje dla niego rodzic. Zauważ, że jeśli zwróci false, to taksonomia nie istnieje (lub jeśli termin nie został znaleziony).

Taksonomie WordPress: warunki, rodzice, dzieci

W tym celu będziesz chciał dodać warunek do swojego kodu, aby go utworzyć, jeśli to konieczne. Aby jednak kod był zwięzły, pomijam go w następującym kodzie :

<?php

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

Zauważ, że przechowuję wynik powyższego kodu w  zmiennej $parentTermInfo. To jest po to, abyśmy mogli przekazać to do naszej ostatniej funkcji do zastosowania informacji nadrzędnej do naszego obiektu post.

4 Zastosuj termin do postu

Na koniec zastosujemy termin (lub terminy), jeśli istnieje obiekt nadrzędny. Przypomnijmy, że w tym miejscu będzie potrzebny warunek. Mówiąc najprościej, jeśli nie ma rodzica, wartość $parentTermInfo[’parent’] nie będzie potrzebna.

Taksonomie WordPress: warunki, rodzice, dzieci

Ale w przypadku poniższego kodu zakładamy, że go mamy.

<?php

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

Na podstawie odwołania do kodu zauważ, że spowoduje to utworzenie terminu, jeśli jeszcze nie istnieje; w przeciwnym razie użyje tego, co już zostało zdefiniowane i zastosuje to do posta.

I zrobione

Ogólnie rzecz biorąc, to nie jest aż tak dużo pracy. Pomaga to upewnić się, że dobrze rozumiesz, jak działają taksonomie i ich terminy. Co więcej, pomaga również wiedzieć, jak pobrać rodzica danego terminu, jeśli chcesz to zrobić (w przeciwnym razie trzeci krok nie jest konieczny).

Ale miejmy nadzieję, że powyższe linki i powyższy kod zapewnią wszystko, czego potrzebujesz, aby utworzyć taksonomię i zastosować ją do posta (a także w razie potrzeby nadrzędnego terminu).

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów