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

В общем задача, нужно создать одно произвольное поле. В админке это список рубрик с чекбоксами (лучше конечно список подрубрик одной рубрики), можно просто дополнительный список рубрик — как стандартный от 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.
    Добавить Комментарий

    Ваш ответ

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