1

如何创建仅显示来自自定义帖子类型的帖子的 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' );
4

2 回答 2

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的文档。

于 2012-08-14T15:08:58.183 回答
0

这个问题可能很老,但是,这可以帮助其他试图获得自定义帖子类型的人显示自定义类别模板。假设您有一个名为“事件”的自定义帖子类型。默认情况下,您可能希望拥有“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('your-custom-header'); 从您的 archive.php 或任何您想要的自定义模板中复制/粘贴代码;get_footer('你的自定义页眉'); 以及介于两者之间的任何内容。当然,您需要让您实际过滤该类别的代码:

if( have_posts() ) {
    while( have_posts() ) {
      the_post(); ------ blah blah blah---your code
于 2018-03-01T19:27:41.700 回答