Отображение пользовательских типов записей, которые имеют таксономии - PullRequest
0 голосов
/ 13 мая 2011

У меня есть пользовательский тип постов Products в моем проекте WordPress. CPT имеет несколько пользовательских полей и две таксономии, которые могут быть прикреплены к нему. Я могу добавлять / редактировать / удалять все это в админке WordPress без проблем.

Моя проблема, с которой я сейчас борюсь, - это отображение пользовательских типов сообщений в передней части. Если я зайду в раздел администрирования РЕДАКТИРОВАТЬ ПРОДУКТ, я вижу Постоянную ссылку для каждого отдельного продукта (я даже вижу ссылки для каждой таксономии), но при щелчке по ним появляется 404.

Я бы хотел иметь возможность напрямую ссылаться на продукты (например, http://localhost:8888/project/product/productname/), как это показано на странице «Редактировать CPT»). Я также хотел бы перечислить продукты, если они выбирают только таксономии для этих продуктов. Надеюсь, что это имеет смысл.

Есть ли способ сделать это без необходимости создавать страницы для каждой таксономии и продукта? Я впервые показываю CPT (любые сообщения на этот счет), поэтому у меня возникают проблемы, когда я оборачиваюсь вокруг него. Нужно ли мне создавать страницы для них?

Спасибо!

Вот мой тип сообщения:

/*  CUSTOM POST TYPE AREA FOR 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', 'products'),
        '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( 'products', $args); 
}

//*********************************************************************//
//**************Custom Taxonomy for Products***************************//
//*********************************************************************//

/* CUSTOM TAXONOMY FOR PRODUCTS POST   */
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', 'products', array (
        'label' => __('Product Category'),
        'labels' => $labels,
        'hierarchical' => true,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'product-category'),
        )); 
}

function create_product_type_taxonomy() {
    $labels = array(
        'name' => _x( 'Types', 'taxonomy general name' ),
        'singular_name' =>_x( 'Type', 'taxonomy singular name' ),
        'search_items' =>  __( 'Search Types' ),
        'popular_items' => __( 'Popular Types' ),
        'all_items' => __( 'All Types' ),
        'parent_item' => null,
        'parent_item_colon' => null,
        'edit_item' => __( 'Edit Product Type' ),
        'update_item' => __( 'Update Product Type' ),
        'add_new_item' => __( 'Add New Product Type' ),
        'new_item_name' => __( 'New Product Type' ),
        'menu_name' => __( 'Types' )
        );

    register_taxonomy('producttype', 'products', array (
        'label' => __('Product Type'),
        'labels' => $labels,
        'hierarchical' => true,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'product-type'),
        )); 
}

add_action( 'init', 'create_productcategory_taxonomy', 0 );
add_action( 'init', 'create_product_type_taxonomy', 0 );

1 Ответ

0 голосов
/ 13 мая 2011

У меня была эта проблема на прошлой неделе, решения, которые я нашел: 1- создать страницу, которая проходит по всем постам (или нескольким) пользовательского типа поста: http://codex.wordpress.org/Pages#A_Page_of_Posts_for_a_Custom_Post_Type, это пример, который я нашел в документации WordPress.Поэтому после создания этого шаблона страницы вам просто нужно будет создать страницу в администраторе и выбрать только что созданный шаблон.

2 - если вы хотите отобразить пользовательские сообщения в основном цикле сайта, этот код работаетотлично: http://justintadlock.com/archives/2010/02/02/showing-custom-post-types-on-your-home-blog-page

3 - наконец, в WordPress 3.1+ вы можете создать single- {posttype} .php (например: single-acme_product.php), чтобы изменить способ отображения пользовательского типа записи при отображенииодин.

надеюсь, что может помочь вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...