默认情况下未选择自定义分类模板

时间:2015-08-19 07:23:04

标签: php wordpress

我注册了自定义帖子类型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 );
}   

1 个答案:

答案 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' );