Произовльное поле из рубрик

В общем задача, нужно создать одно произвольное поле. В админке это список рубрик с чекбоксами (лучше конечно список подрубрик одной рубрики), можно просто дополнительный список рубрик — как стандартный от wp. На выводе должна быть ссылка на рубрику с название этой рубрики. Пример, выбираем в админке рубрику  Москва, получаем на странице записи ссылку — <a href=»site.ru/moscow»>Москва</a>.  Подскажите, пожалуйста, как такое реализовать? На проекте есть для других полей плагин ACF, если он здесь поможет.

Добавить Комментарий
Ответ

Для создания новой таксономии, откройте файл functions.php который расположен в папке с вашим шаблоном(шаблон который вы используете на вашем сайте вордпресс)
Добавьте следующий код:

 add_action('init', 'create_taxonomy');
 function create_taxonomy(){
 // заголовки
 $labels = array(
 'name'              => 'Категория спорт',
 'singular_name'     => 'sport',
 'search_items'      => 'Поиск',
 'all_items'         => 'Все категории',
 'parent_item'       => 'Вложенные категории',
 'parent_item_colon' => 'Вложенные категории:',
 'edit_item'         => 'Редактировать категорию',
 'update_item'       => 'Обновить',
 'add_new_item'      => 'Добавить новую',
 'new_item_name'     => 'Имя категории',
 'menu_name'         => 'sport',
 );
 // параметры
 $args = array(
 'label'                 => '', // определяется параметром $labels->name
 'labels'                => $labels,
 'public'                => true,
 'show_in_nav_menus'     => true, // равен аргументу public
 'show_ui'               => true, // равен аргументу public
 'show_tagcloud'         => true, // равен аргументу show_ui
 'hierarchical'          => false,
 'update_count_callback' => '',
 'rewrite'               => true,
 //'query_var'             => $taxonomy, // название параметра запроса
 'capabilities'          => array(),
 'meta_box_cb'           => null, // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще
 'show_admin_column'     => false, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
 '_builtin'              => false,
 'show_in_quick_edit'    => null, // по умолчанию значение show_ui
 );
 register_taxonomy('sport', array('post'), $args );
 }
 

Данный код добавит новую таксономию (под названием sport), которая будет отображаться в админке там же где обычные категории(чуть ниже по меню)
Так же при создании поста вы увидите их справа под обычными категориями.

Для того что бы вывести данные категории в посте откройте файл single.php. Выбирите место где вам нужно вывести и пропишите:

 <?php echo get_the_term_list(get_the_ID(), 'sport', '', ', ', ''); ?>
 

Ссылки на категории выведутся через запятую.

Будут вопросы — задавайте.

Добавить Комментарий

Как мне кажется лучше будет создать новую таксономию(как блок с рубриками) и выбирать их там, затем выводить таксономию.

Или вам нужны именно произвольные поля?

Уточните и я подскажу вам как реализовать:)

Добавить Комментарий

Наверное хватит просто новой таксаномии (стандартного списка рубрики), и выводить их в виде ссылок. Только подскажите, пожалуйста, как реализовать все это, таксономии никогда не создавал новые.

Добавить Комментарий

Большое спасибо за подробную инструкцию, но возникли два дополнительных вопроса.
1) Выводиться в записи не дополнительный список рубрик, а дополнительный список меток. Подскажите, пожалуйста, как все таки выбор реализовать через список рубрик? Версия WordPress 4.3.
2) Также не получилось добавить 2 таких таксономии на странице, мне нужно сделать 2 таких дополнительных рубрики. — Районы и Метро.  Ваша версия отлично работает, но сделать дополнительную из нее не вышло.

1. выводится список рубрик, вы наверное просто не добавили туда категорий
2.  скопируйте код и вставьте его еще раз + замените слово «sport» на свое(на английском без пробелов и спецсимволов), во второй и третей строке замените  название функции «create_taxonomy» на свое(что бы не повторялись, например create_taxonomy_new ).

в 30.11.2015.
Добавить Комментарий

У меня в записи выводиться поле меток, вот скриншот, http://joxi.ru/BA00n1nIBl0NVA . Категории я добавил.
По второму пункту все отлично, спасибо большое.

Найдите строку:

 'meta_box_cb' => null, // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще
 

Замените ее на:

 'meta_box_cb'  => 'post_categories_meta_box', // callback функция. Отвечает за html код метабокса (с версии 3.8): post_categories_meta_box или post_tags_meta_box. Если указать false, то метабокс будет отключен вообще
 

Все было описано. Нужно чуть чуть внимательности..

в 30.11.2015.
Добавить Комментарий

Спасибо, теперь отображаются именно категории, не обратил внимание на эту сроку, извиняюсь.
Но появилась еще одна проблема, выбираю рубрику, обновляю запись, вместо моей выбранной рубрики, появляется новая рубрика с именем — 6. Остается активной она, а не выбранная мной рубрика. При новой попытке, появляется рубрика 7, и т д.

Замените массив $args на следующий:

 $args = array(
 'hierarchical' => true,
 'labels' => $labels,
 'public' => true,
 'publicly_queryable' => true,
 'show_ui' => true,
 'show_in_nav_menus' => false,
 'show_tagcloud' => false,
 'query_var' => true,
 'rewrite' => array('slug' => 'sport')
 );
 

в 30.11.2015.
Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.