Генерация меню WordPress из пользовательских таксономий

#php #wordpress #taxonomy #custom-post-type

#php #wordpress #таксономия #пользовательский тип записи

Вопрос:

Я создал пользовательский тип записи (products), который имеет несколько пользовательских таксономий. Одним из которых является «категория». Я хотел бы, чтобы мое меню в разделе «Продукты» генерировалось автоматически с помощью пользовательской таксономии «категория», чтобы пользователи могли щелкнуть по меню PRODUCTS -> <category> , и это приведет их к списку конкретных продуктов с этой категорией (у меня уже есть страница, на которой отображается один продукт, и страница, на которой перечислены ВСЕ продукты). Обратите внимание, что у некоторых category таксономий будут дочерние элементы, и я хотел бы показать это и в меню.

Я несколько новичок в WordPress, и единственный известный мне способ создания меню — это через wp-admin, но я не хочу заходить и создавать страницу / меню для каждой категории и подкатегории.

Возможно ли вообще то, о чем я говорю? Спасибо!

Пользовательский тип записи здесь:

 add_action( 'init', 'create_product_post_type' );

function create_product_post_type() 
{
    $labels = array(
        'name' => _x('Products', 'post type general name'),
        'singular_name' => _x('Product', 'post type singular name'),
        'add_new' => _x('Add New', 'product'),
        'add_new_item' => __('Add New Product'),
        'edit_item' => __('Edit Product'),
        'new_item' => __('New Product'),
        'view_item' => __('View Product'),
        'search_item' => __('Search Products'),
        'not_found' => __('No products found'),
        'not_found_in_trash' => __('No products found in Trash'),
        'parent_item_colon' => '',
        'menu_name' => 'Products'           
        );

    $args = array(
        'label' => __('Products'),
        'labels' => $labels,
        'public' => true,
        'can_export' => true,
        'show_ui' => true,
        '_builtin' => false,
        'capability_type' => 'post',
        'menu_icon' => get_bloginfo('template_url').'/functions/images/product.png',
        'hierarchical' => false,
        'rewrite' => array( "slug" => "product" ),
        'supports' => array('title'), //MAYBE add thumbnail later!
        'show_in_nav_menus' => true

        );

        register_post_type( 'product', $args);  
}
  

И вот таксономия:

 function create_productcategory_taxonomy() {
    $labels = array(
        'name' => _x( 'Categories', 'taxonomy general name' ),
        'singular_name' =>_x( 'Category', 'taxonomy singular name' ),
        'search_items' =>  __( 'Search Categories' ),
        'popular_items' => __( 'Popular Categories' ),
        'all_items' => __( 'All Categories' ),
        'parent_item' => null,
        'parent_item_colon' => null,
        'edit_item' => __( 'Edit Product Category' ),
        'update_item' => __( 'Update Product Category' ),
        'add_new_item' => __( 'Add New Product Category' ),
        'new_item_name' => __( 'New Product Category' ),
        'separate_items_with_commas' => __( 'Separate categories with commas' ),
        'add_or_remove_items' => __( 'Add or remove product categories' ),
        'choose_from_most_used' => __( 'Choose from the most used categories' )
        );

    register_taxonomy('productcategory', 'product', array (
        'label' => __('Product Category'),
        'labels' => $labels,
        'hierarchical' => true,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'product-category'),
        )); 
}
  

Комментарии:

1. Непонятно. Что такое тип записи, каковы таксономии и т.д.

2. Извините, пользовательский тип записи называется Product. Таксономия — это категория. Я обновлю свой пост, чтобы показать вам каждое из них в коде.

Ответ №1:

Попробуйте wp_list_categories. Он экспортирует категории из таксономии со ссылками на выбранную вами глубину. (таким образом, столько дочерних категорий, сколько вы хотите), отформатированных в виде списка (например, с <ul> и <li> элементами).
Я бы добавил это туда, где меню, которое вы хотите заменить, будет размещено в вашем шаблоне. Надеюсь, это поможет, но я вернусь и уточню, если это не поможет.
Я забыл упомянуть, что страницы, на которые он ссылается, переходят на страницы категорий. Смотрите здесь.

Комментарии:

1. Ах, спасибо! Играя вокруг, я смог успешно перечислить все мои категории и подкатегории. Я создал свое меню в wp-admin, но, похоже, я могу поиграть с ним, используя функцию wp-nav-menu. Могу ли я отредактировать меню, которое у меня уже есть, программно или мне нужно создать новое меню с нуля?

2. Вы можете использовать фильтр для редактирования выходных данных wp_nav_menu, но для получения дополнительной информации я бы посмотрел здесь. .

3. Ой, это немного ошеломляет. Вместо этого я мог бы просто использовать get_categories. Спасибо.