Categorieën (WordPress)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Dit artikel behandelt de generieke Category-taxonomie-functionaliteit van WordPress. WooCommerce maakt gebruik van eigen instanties van deze generieke Catalog-functionaleit, die ik product_cat noem. Voor meer over product_cat, zie dit artikel: Product cat-taxonomieën (WordPress).

Algemeen

Taalspecifiek

Taxons zijn taal-specifiek. Als je bv. een Duits product probeert toe te voegen aan een Nederlandstalige categorie, wordt er een kopie gemaakt van die categorie in het Duits (automatisch gekoppeld aan de NL-categorie!), en dat product wordt daar toegevoegd

Taxonpagina (archives page)

  • Elke categorie-taxon heeft z'n eigen pagina. Dus z'n eigen Archives page. Standaard kun je een afbeelding en description-tekst per taxon toevoegen. Het hangt van het thema af of het getoond wordt - Altijd doen!
  • WooCommerce Attribuut-taxons hebben echter niet zo'n eigen pagina.

Database-model

Ik vind het geweldig om via de WP-CLI-API te werken, maar soms gaat er niets boven rechtstreeks in SQL werken. En dan heb je het database-model nodig:

De vier tabellen die een rol spelen rondom Categorie-taxonomieën. Merk op dat WordPress bijna nooit relaties defineert tussen tabellen
Categorie-taxonomieën: Een impressie. Tabel wp_links wordt in mijn ervaring nooit gebruikt. Daarnaast denk ik dat tabel cruciaal is in zo'n overzicht [1]

wp_term_taxonomy

  • Tabel wp_term_taxonomy is vermoedelijk de centrale tabel rondom taxonomieën waarbij elke rij een taxon representeert
  • Additionele info per taxon, staat in tabel wp_terms, gelinkt via sleutel term_id
  • Vreemd genoeg is er geen tabel met algemene informatie per taxonomy. Deze tabel wp_term_taxonomy komt het dichtst in de buurt van zo'n tabel.

Velden:

  1. term_taxonomy_id - Primaire sleutel van deze tabel
  2. term_id - Taxon-id - PK voor tabel wp_terms
  3. taxonomy - Naam van de taxonomie waar deze taxon deel van uitmaakt. Merk op dat er geen tabel is met algemene inf
  4. description - Titel op de shoppagina voor de betreffende categorie. Soms bevat dit veld serialised data, maar dat lijkt niet het geval te zijn als er een 'reguliere' titel is ingevoerd - Zie schermafdrukken hieronder
  5. parent - Parenteel-taxon (is dat Nederlands?). Voor 'top-level' taxons heeft dit veld de waarde 0
  6. count - Aantal elementen (denk ik - Nu niet al te belangrijk).
Voorbeeld van de inhoud van tabel wp_term_taxonomy
Voorbeeld description-veld als titel op een shoppagina

wp_terms

Tabel wp_terms bevat additionele informatie voor alle taxons in alle taxonomieën en voor alle talen, en is min-of-meer een uitbreiding van tabel wp_term_taxonomy. Waarom deze aparte tabel? Waarschijnlijk om historische redenen

Voorbeeld van de inhoud.pll staat vermoedelijk voor Polylang. Ik weet alleen niet waar die taxons voor zijn
Ander voorbeeld. De taxons 10 mm en 20 mm hebben betrekking op de attribute Dimensie-1 (zie eerder voorbeeld)

wp_termmeta

  • Tabel wp_termmate bevat meta-data voor taxons, vergelijkbaar met hoe tabel wp_postmeta meta-data voor posts bevat
  • Het is oa. bedoeld voor programmeurs die additionele gegevens willen bijhouden, bv. SEO-teksten voor gebruik op shoppagina's die horen bij bepaalde product_cat-taxons.

wp_term_relationships

  • Tabel wp_term_relationships is een tussentabel die taxons associëert met WordPress-objecten zoals pagina's of producten
  • Deze tabel heeft een samengestelde primaire sleutel: object_id+term_taxonomy_id.

wp_options

Incidenteel bevat tabel wp_options additionele informatie over taxonomieën, bijvoorbeeld instellingen.

Voorbeeld van een webwinkel: Tabel wp_options bevat slechts twee rijen die betrekking hebben op de product_cat-taxonomie

Vertalen

Hoe vertaal je een complete product_cat-taxonomie? Laatste ervaringen zomer 2022:

Taxon-namen & -slugs

De namen en slugs van taxons worden bijgehouden in tabel wp_terms.

Tot op heden heb ik vertalen van namen & slugs van taxons, rechtstreeks in SQL gedaan: Ik heb nog geen effectieve manier gevonden om dat in bulk via WP-CLI te doen. In SQL kan ik duizende taxons in een seconde vertalen. Via WP-CLI moet ik vermoedelijk voor elke taxon apart een match gaan doen. Dat duurt vermoedelijk uren.

Taxon-beschrijvingen

Taxon-beschrijvingen worden bijgehouden in tabel

Categorieën verwijderen

Nog niet gelukt. Zie PHP-API » get_categories

Zie ook