我注册了自定义帖子类型faq
以及faq
名为cat_faq
的分类。我创建了一个名为taxonomy-cat_faq.php
的模板,但默认情况下未选中。它总是显示404页面。我不明白为什么会这样呢?我读出了Template Hierarchy并按照以下方式工作但未能找出错误。我附上了以下代码
add_action('init', 'register_faq');
function register_faq(){
$post_type = 'faq';
$label = array(
'name' => _x('FAQ', 'FAQ', 'faq'),
'singular_name' => _x('FAQ', 'FAQ', 'faq'),
'menu_name' => _x('FAQ', 'admin menu', 'faq')
);
$args = array(
'labels' => $label,
'public' => true,
'rewrite' => array('slug' => 'faq'),
'capability' => 'post',
'supports' => array('title', 'editor', 'thumbnail'),
);
register_post_type($post_type, $args);
}
// create taxonomies for the post type "faq"
add_action( 'init', 'create_faq_taxonomies', 0 );
function create_faq_taxonomies() {
$labels = array(
'name' => _x( 'FAQ', 'taxonomy general name' ),
'singular_name' => _x( 'FAQ', 'taxonomy singular name' ),
'search_items' => __( 'Search FAQ' ),
'edit_item' => __( 'Edit FAQ' ),
'update_item' => __( 'Update FAQ' ),
'add_new_item' => __( 'Add New FAQ' ),
'new_item_name' => __( 'New FAQ' ),
'menu_name' => __( 'Category FAQ' ),
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'cat_faq' ),
);
register_taxonomy( 'cat_faq', array( 'faq' ), $args );
}
答案 0 :(得分:2)
最好以这种方式制作自定义帖子类型。 flush_rewrite_rules()
将治愈404。见The Codex
此示例用于在激活插件时创建新的自定义帖子类型。
add_action( 'init', 'my_cpt_init' );
function my_cpt_init() {
register_post_type( ... );
}
function my_rewrite_flush() {
// First, we "add" the custom post type via the above written function.
// Note: "add" is written with quotes, as CPTs don't get added to the DB,
// They are only referenced in the post_type column with a post entry,
// when you add a post of this CPT.
my_cpt_init();
// ATTENTION: This is *only* done during plugin activation hook in this example!
// You should *NEVER EVER* do this on every page load!!
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'my_rewrite_flush' );