我有两个自定义帖子类型,布道和成员的主题。我也有永久链接设置为postname。
首先,single.php会捕获一般博客帖子以及成员,但不会播放布道......它只会显示index.php文件。
经过一番研究,我发现重置(保存)永久链接会重置它们。这种方式现在可以捕获成员自定义帖子,但只显示index.php用于布道。
这就是我称之为......
// Custom Post types for Sermons
add_action('init', 'sermons');
function sermons() {
$args = array(
'labels' => array(
'name' => __( 'Sermons' ),
'singular_name' => __( 'Sermons' ),
'add_new' => __( 'Add Sermon' ),
'add_new_item' => __( 'Add Sermon' ),
'edit_item' => __( 'Edit Sermon' ),
'new_item' => __( 'Add Sermon' ),
'view_item' => __( 'View Sermon' ),
'search_items' => __( 'Search Sermons' ),
'not_found' => __( 'No Home Sermons found' ),
'not_found_in_trash' => __( 'No Sermons found in trash' )
),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
// 'menu_icon' => WP_CONTENT_URL . '/themes/####/images/home-widget.png',
'rewrite' => true,
'exclude_from_search' => true,
'menu_position' => 20,
'supports' => array('title', 'editor', 'thumbnail', 'page-attributes'),
'has_archive' => true
);
register_post_type('sermons',$args);
}
// Custom Post types for Members
add_action('init', 'members');
function members() {
$args = array(
'labels' => array(
'name' => __( 'Members' ),
'singular_name' => __( 'Members' ),
'add_new' => __( 'Add Member' ),
'add_new_item' => __( 'Add Member' ),
'edit_item' => __( 'Edit Member' ),
'new_item' => __( 'Add Member' ),
'view_item' => __( 'View Member' ),
'search_items' => __( 'Search Members' ),
'not_found' => __( 'No Home Members found' ),
'not_found_in_trash' => __( 'No Members found in trash' )
),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
// 'menu_icon' => WP_CONTENT_URL . '/themes/####/images/home-widget.png',
'rewrite' => true,
'exclude_from_search' => true,
'menu_position' => 20,
'supports' => array('title', 'editor', 'thumbnail', 'page-attributes'),
'has_archive' => true
);
register_post_type('members',$args);
}
我曾尝试使用single-sermons.php和single-members.php,但似乎都无法正常工作。这是我注册每个自定义帖子类型的方式吗?
****编辑****
从$ args中删除'rewrite' => true
,一切都很好,但我更喜欢SEO友好的网址。
****编辑****
修复了它...显然,删除了args中的'rewrite' => true
,刷新永久链接,然后再次添加'rewrite' => true
,就可以了。
答案 0 :(得分:9)
您应该在创建自定义帖子类型后执行flush_rewrite_rules()
,这将为您刷新固定链接结构。
只需在flush_rewrite_rules()
功能后添加register_post_type()
。
更多信息:http://codex.wordpress.org/Function_Reference/flush_rewrite_rules
答案 1 :(得分:2)
修正了它...显然,删除了args中的'rewrite' => true
,刷新固定链接,然后再次添加'rewrite' => true
就可以了。
答案 2 :(得分:0)
重新保存永久链接对我有用。 (设置 - >永久链接 - >保存)。
答案 3 :(得分:0)
设置publicly_queryable => true
解决了我的问题。