Justik99
@Justik99
Изучаю WordPress путем поломок своей психики!

Как сделать категории для меток Wordpress?

Всем доброго дня. Столкнулся с такой темой и не знаю как реализовать.
Допустим у нас есть тип записи к которому надо сделать не маленький такой список меток (они же атрибуты). Городить под каждый список атрибутов свою таксономию не хочется (в админке тогда может получиться большой список). Так вот, у WooCommerce уже реализована тема с атрибутами, там таксономии создаются из админки и выводятся в отдельный список. Как такое же можно реализовать на кастомном типе записей?
======
Покопавшись в файлах WooCommerce, я нашел частично реализацию данного функционала.
Получается все так, что WooCommerce собирает все "категории" атрибутов и на основе их генерирует новые таксономии.
В попытке через get_terms() собрать все элементы таксономии, у меня возвращается invalid_taxonomy. Как быть?
======
Проблему с invalid_taxonomy решил, но малость костыльно. Разобрался с генерированием новой таксономии при создании элемента таксономии. Проблема теперь такая, что добавляя элемент в таксономию, он добавляется после обновления страницы
===
Текущий код:
Код

add_action( 'init', 'create_taxonomy' );
function create_taxonomy(){
  register_taxonomy('genre', ['projects'], array(
    'hierarchical'  => false,
    'labels'        => array(
      'name'              => _x( 'Genres', 'taxonomy general name' ),
      'singular_name'     => _x( 'Genre', 'taxonomy singular name' ),
      'search_items'      => __( 'Search Genres' ),
      'all_items'         => __( 'All Genres' ),
      'parent_item'       => __( 'Parent Genre' ),
      'parent_item_colon' => __( 'Parent Genre:' ),
      'edit_item'         => __( 'Edit Genre' ),
      'update_item'       => __( 'Update Genre' ),
      'add_new_item'      => __( 'Add New Genre' ),
      'new_item_name'     => __( 'New Genre Name' ),
      'menu_name'         => __( 'Genre' ),
    ),
    'public'        => true,
    'show_ui'       => true,
    'query_var'     => true,
  ));
}
add_action( 'init', 'create_taxonomy' );

function generation_taxonomy() {
  $catalog_genres = get_terms( [
    'taxonomy' => 'genre',
    'hide_empty' => false,
  ] );

  foreach( $catalog_genres as $genre ){
    
    register_taxonomy( 'pj_' . $genre->slug, ['projects'], array(
      'hierarchical'  => false,
      'labels'        => array(
        'name'              => $genre->name,
        'singular_name'     => $genre->name,
        'search_items'      => __( 'Search Genres' ),
        'all_items'         => __( 'All Genres' ),
        'parent_item'       => __( 'Parent Genre' ),
        'parent_item_colon' => __( 'Parent Genre:' ),
        'edit_item'         => __( 'Edit Genre' ),
        'update_item'       => __( 'Update Genre' ),
        'add_new_item'      => __( 'Add New Genre' ),
        'new_item_name'     => __( 'New Genre Name' ),
        'menu_name'         => $genre->name,
      ),
      'public'        => true,
      'show_ui'       => true,
      'query_var'     => true,
    ));
    var_dump($genre);
  }
}
add_action( 'init', 'generation_taxonomy' );

  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы