Нядаўна ў мяне з'явілася неабходнасць захоўваць дадатковую метаінфармацыю аб кожнай катэгорыі / карыстацкай таксанаміі ў WordPress. У прынцыпе, мне проста трэба было дадаць лішняе поле. Справа была ў тым, каб знайсці патрэбныя гаплікі і зрабіць просты мета-убудова. Мы не ствараем шмат новых катэгорый, нам трэба проста захаваць дадатковую інфармацыю аб існуючых, таму я проста падключыў форму рэдагавання.

Я таксама хацеў, каб гэта функцыянавала без выкарыстання якіх-небудзь карыстацкіх табліц, але сапраўды няма добрага месца для захоўвання такой інфармацыі ў табліцах WordPress па змаўчанні. Я вырашыў, што табліца wp_options будзе лепш за ўсё падыходзіць з тых часоў, калі справа даходзіць да яе, большасць сайтаў не будзе мець некалькі сотняў катэгорый. На нашым баку інфармацыі, якая захоўваецца, дастаткова, каб стварыць праблему.

addcharge ('category_edit_form_fields', 'taxonomy_meta_form_fields'); addcharge ('edited_category', 'taxonomy_meta_form');

Першыя дзеянні гаплікаў у форме рэдагавання таксаноміі. Ён адлюстроўвае створаную намі форму і выводзіць з функцыі пад назвай таксаномія_мета_фармат. Другое дзеянне называе taxonomy_meta_form, калі форма катэгорыі фактычна адрэдагавана.

Поўны код

addcharge ('category_edit_form_fields', 'taxonomy_meta_form_fields'); addcharge ('edited_category', 'taxonomy_meta_form'); функцыя taxonomy_meta_form () {if (! current_user_can ('management_options')) // пераканайцеся, што карыстальнік вяртае адпаведныя дазволы; калі ($ _ POST ['extra_title']) {$ extra_title = sanitize_text_field ($ _ POST ['extra_title']); // не пераканайцеся, што нічога шкоднага $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = несерыялізаваць ($ extra_titles); $ cat_ID = (int) $ _ POST ['tag_ID']; $ extra_titles [$ cat_ID] = $ extra_title; // абнавіць значэнне для ID катэгорыі update_option ('extra_taxonomy_titles', $ extra_titles); // захоўваць масіў, WP апрацоўвае серыялізацыю}} функцыю таксономіі_meta_form_fields ($ tag) {$ cat_ID = $ tag-> term_id; $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_title = $ extra_titles [$ cat_ID]; ?>

Падключэнне да карыстацкіх таксанаміях

addcharge ('TAXONOMYNAME_edit_form_fields', 'taxonomy_meta_form_fields'); addcharge ('edited_TAXONOMYNAME', 'taxonomy_meta_form');

Каб зрабіць гэта самае дзеянне, але замест карыстацкіх таксанамій, гэта простая справа, як змяніць кручок дзеянняў. Проста заменіце TAXONOMYNAME вышэй на слізкі, які звязаны з вашай карыстацкай таксанаміяй.

Адлюстраванне інфармацыі

Каб атрымаць інфармацыю, якая захоўваецца ў нас на пярэдняй старонцы, я рэкамендую стварыць простую функцыю для захоўвання ў тэме файла function.php вашай тэмы:

функцыя tj_extra_title ($ id) {$ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = несерыялізаваць ($ extra_titles); $ extra_title = $ extra_titles [$ id]; вярнуць $ extra_title; }

Затым яго можна назваць са старонкі шаблона наступным чынам:

$ extra_title = tj_extra_title ($ category-> term_id); // замяніць ідэнтыфікатар любой зменнай, якая падыходзіць вашаму кантэксту echo $ extra_title;

Паглядзець код на github. Задайце пытанні ніжэй.