Фильтровать и запрашивать мои продукты (настраиваемый тип публикации) по их пользовательской таксономии

Итак, моя WordPress CMS прошла довольно долгий путь (и я довольно много узнал о WordPress. Я создал собственный тип записи под названием Products, который находится здесь:

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);  
}

Затем пользовательская таксономия под названием Category, которая находится здесь:

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'),
        )); 
}

Я создал одну страницу в меню wp-admin под названием «Продукты», на которой есть собственный шаблон, который я сделал. Перейдя по адресу http://localhost/project/products, вы увидите список всех типов сообщений о продуктах. Я также сделал страницу для single-products.php, которая отображает информацию о типе сообщения об одном продукте.

Что я не знаю, как сделать, так это создать способ фильтрации моих продуктов по пользовательской таксономии Category, указанной выше. Допустим, у меня есть продукт, который является виджетом. Этот виджет имеет Category «пружинной нагрузки». Если я хочу просмотреть один виджет, я могу просто указать ссылку http://localhost/project/products/widget, и он откроет страницу single-product.php и отобразит виджет, поскольку я отформатировал страницу для этого. Но я хотел бы сделать ссылку только на категорию «Пружинная загрузка» и перечислить все мои продукты в этой пользовательской категории. Я считаю, что у каждой категории есть свой собственный слаг (например, подпружиненный). Если я перейду на http://localhost/project/product-category/spring-loaded он открывает страницу, но я не знаю, какой файл она загружает, иначе я мог бы изменить вывод. Прямо сейчас он загружает каждый продукт как обычный пост (с датой, комментариями и т. д.).

Итак, мой вопрос: как я могу отфильтровать эти категории? Или какой файл мне изменить, чтобы изменить вывод страницы, на которую ссылается http://localhost/project/product-category/spring-loaded ?

Я надеюсь это имеет смысл. Спасибо!

ОБНОВЛЕНИЕ: Ааааа. Теперь это имеет смысл. Я изменил это:

 register_taxonomy('productcategory', 'product', array (
        'hierarchical' => true,
        'rewrite' => array( 'slug' => 'product-category'),
        ));

к этому:

 register_taxonomy('productcategory', 'product', array (
        'hierarchical' => true,
        'rewrite' => array( 'hierarchical' => true),
        ));

Хотя я не уверен, что именно он делает.

Я также создал таксономию-productcategory.php и сделал небольшое форматирование и тестирование, но это действительно работает. Я могу перейти на http://localhost/project/productcategory/, и там будут перечислены все продукты для этого категория.

Теперь мне нужно изменить мои правила перезаписи, как это сделали вы? Честно говоря, я не понимаю, как работает htaccess, поэтому не знаю, нужно ли мне его менять или нет. Спасибо!


person ItsPronounced    schedule 09.06.2011    source источник
comment
если это сработает, то вам не нужно менять переписывание.   -  person ariefbayu    schedule 10.06.2011


Ответы (1)


Это почти та же проблема, что и несколько недель назад. Он уже ответил на Wordpress.SE: https://wordpress.stackexchange.com/questions/14451/taxonomy-terms-and-template-files

person ariefbayu    schedule 09.06.2011
comment
Когда они говорят, что страница шаблона «taxonomy-type.php» означает буквально «taxonomy-type.php», или я заменяю таксономию своим ярлыком таксономии (категория продукта)? Также моя текущая переписываемая пользовательская таксономия выглядит так 'rewrite' => array( 'slug' => 'product-category'). Мне также нужно изменить его на 'rewrite' => array( 'hierarchical' => true)? Я не совсем уверен, что это делает. - person ItsPronounced; 10.06.2011