Ik had onlangs behoefte om wat extra meta-informatie op te slaan over elke categorie / aangepaste taxonomie in WordPress. Eigenlijk hoefde ik alleen maar een extra veld toe te voegen. Het was gewoon een kwestie van de juiste haken te vinden en een eenvoudige categorie-metaplugin te maken. We voegen niet veel nieuwe categorieën toe, maar we moesten vooral wat extra informatie over de bestaande opslaan, dus ik heb me net in het bewerkingsformulier gehangen.
Ik wilde ook dat dit werkte zonder aangepaste tabellen te gebruiken, maar er is echt geen goede plek om informatie van deze soort op te slaan binnen de standaard WordPress-tabellen. Ik besloot dat de tabel wp_options het meest geschikt zou zijn, omdat als het erop aankomt, de meeste sites niet meer dan een paar honderd categorieën zouden hebben. Er wordt niet genoeg informatie aan ons einde opgeslagen om een probleem te creëren.
add_action (category_edit_form_fields ', ' taxonomy_meta_form_fields); add_action ('edited_category', 'taxonomy_meta_form');
De eerste actie haakt in het bewerkingsformulier voor categorie / taxonomie. Het geeft de vorm weer die we hebben gecreëerd en uitvoeren vanuit de functie met de naam taxonomy_meta_form_fields . De tweede actie roept taxonomy_meta_form aan wanneer het categorieformulier daadwerkelijk wordt bewerkt.
Volledige code
add_action (category_edit_form_fields ', ' taxonomy_meta_form_fields); add_action ('edited_category', 'taxonomy_meta_form'); function taxonomy_meta_form () {if (! current_user_can ('manage_options')) // zorg ervoor dat de gebruiker de juiste machtigingen teruggeeft; if ($ _ POST ['extra_title']) {$ extra_title = sanitize_text_field ($ _ POST ['extra_title']); // zorg ervoor dat niets kwaadaardig is $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ cat_ID = (int) $ _ POST ['tag_ID']; $ extra_titles [$ cat_ID] = $ extra_title; // update de waarde voor de ID update_option van deze categorie ('extra_taxonomy_titles', $ extra_titles); // sla de array op, WP verwerkt de serialization}} functie taxonomy_meta_form_fields ($ tag) {$ cat_ID = $ tag-> term_id; $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_title = $ extra_titles [$ cat_ID]; ?>
Aansluiten op aangepaste taxonomieën
add_action (TAXONOMYNAME_edit_form_fields ', ' taxonomy_meta_form_fields); add_action ('edited_TAXONOMYNAME', 'taxonomy_meta_form');
Om deze zelfde actie te doen, maar in plaats daarvan voor aangepaste taxonomieën, is het een kwestie van het veranderen van de actiehaak. Vervang TAXONOMYNAME hierboven alleen door de slak die is gekoppeld aan uw aangepaste taxonomie.
De informatie weergeven
Om de informatie op te halen die voor ons op de frontend is opgeslagen, raad ik u aan een eenvoudige functie te maken voor het opslaan van het functie.php-bestand van uw thema:
functie tj_extra_title ($ id) {$ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ extra_title = $ extra_titles [$ id]; $ extra_title teruggeven; }
Het kan dan als volgt worden opgeroepen vanaf een sjabloonpagina:
$ extra_title = tj_extra_title ($ categorie-> term_id); // vervang de id door de variabele die geschikt is voor uw context. echo $ extra_title;
Bekijk code op github. Stel onderstaande vragen.