我几天来一直在努力解决这个问题,而我似乎并没有接近解决方案。我一直在搜索论坛和教程网站,但最终变得更加困惑,因为似乎有很多方法和变化来实现我正在寻找的东西。
我想要做的是创建一个自定义帖子类型存档,可以根据网址字符串按照分类条款进行过滤。
_domain/products/_
_domain/products/taxonomy-term/_
_domain/products/taxonomy-term/product-1_
因此,分类术语只会显示该类型的自定义帖子。
我已经达到了这个目标。这似乎适用于domain / products / taxonomy_term / product_1,但没有获取任何存档模板。
// define custom post types
add_action( 'init', 'create_products' );
function create_products() {
register_post_type( 'products',
array(
'labels' => array(
'name' => __( 'Products' ),
'singular_name' => __( 'Product' )
),
'public' => true,
'has_archive' => true,
'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'revisions' ),
'rewrite' => array('slug' => 'products/%product_cat%', 'with_front' => true ),
'hierarchical' => true,
'query_var' => true,
'show_in_nav_menus' => true,
'menu_position' => 5
)
);
}
add_action( 'init', 'create_my_taxonomies', 0 );
function create_my_taxonomies() {
register_taxonomy(
'product_cat',
'products',
array(
'labels' => array(
'name' => 'Product Categories',
'add_new_item' => 'Add New Product',
'new_item_name' => "New Product Category"
),
'show_ui' => true,
'show_tagcloud' => false,
'hierarchical' => true,
'rewrite' => array( 'slug' => 'products', 'with_front' => true ),
'query_var' => true,
)
);
}
function filter_post_type_link($link, $post)
{
if ($post->post_type != 'product_listing')
return $link;
if ($cats = get_the_terms($post->ID, 'product_cat'))
$link = str_replace('%product_cat%', array_pop($cats)->slug, $link);
return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);
答案 0 :(得分:0)
对我而言,这是一个命名冲突。我有一个与分类法同名的帖子类型。这引起了冲突。
register_post_type( 'some_name' );
register_taxonomy( 'some_name' );
将分类法重命名为独特的内容。
register_taxonomy( 'some_tax_name' );