Wordpress自定义帖子类型的自定义category.php?

时间:2012-08-14 14:55:11

标签: wordpress categories custom-post-type

如何创建仅显示的category.php模板(例如category-testimonial.php) 来自自定义帖子类型的帖子?

以下是我创建自定义帖子类型的代码:

function testimonials_custom_init() {

    $labels = array(
        'name' => _x('Testimonials', 'post type general name'),
        'singular_name' => _x('Testimonial', 'post type singular name'),
        'add_new' => _x('Add New', 'testimonial'),
        'add_new_item' => __('Add New Testimonial'),
        'edit_item' => __('Edit Item'),
        'new_item' => __('New Testimonial'),
        'view_item' => __('View Testimonial'),
        'search_items' => __('Search Testimonials'),
        'not_found' =>  __('Nothing found'),
        'not_found_in_trash' => __('Nothing found in Trash'),
        'parent_item_colon' => ''
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'show_in_nav_menus' => false,
        'query_var' => true,
        'rewrite' => array('slug','pages'),
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => 5,
        'has_archive' => 'testimonials',
        'supports' => array('title','editor','thumbnail','excerpt',)
      );

    register_post_type( 'testimonials' , $args );
}
add_action( 'init', 'testimonials_custom_init' );

2 个答案:

答案 0 :(得分:3)

听起来你很混淆分类法(标签和类别)和帖子类型(帖子,页面,自定义帖子类型)。您真正想要做的是为自定义帖子类型创建归档模板,例如archive-custom_post_type.php

您还需要确保在创建自定义帖子类型时调用register_post_type()来设置has_archive => 'custom_post_type'。然后,当您导航到http://yourdomain.com/custom_post_type时,您将转到自定义存档模板。

有关详情,请参阅WP register_post_typeTemplate Hierarchy上的文档。

答案 1 :(得分:0)

这个问题可能很旧,但是,这可以帮助其他尝试获取自定义帖子类型的人显示自定义类别模板。我们假设您有一个名为" events"的自定义帖子类型。默认情况下,您希望例如拥有" category-events.php"并过滤仅与此自定义帖子类型相关联的类别。 Wordpress不会让你这样做(但也许)。

我的解决方法是首先在您的子主题中创建一个空白的category.php(或者您将删除该子主题文件中已有的内容并替换为下面的代码。)

然后粘贴该代码:     

 if ( isset( $post_type ) && locate_template( 'category-' . $post_type . 
'.php' ) ) 

{

get_template_part( 'category', $post_type );

exit;

 }

那就是它。

现在您需要创建实际的模板文件,例如" category-events.php"。在该文件中,您可以使用get_header复制/粘贴archive.php或任何自定义模板中的代码(' your-custom-header'); get_footer('您定制的头');以及你需要的任何内容。当然,您需要能够实际过滤该类别的代码:

if( have_posts() ) {
    while( have_posts() ) {
      the_post(); ------ blah blah blah---your code