4

我正在尝试在 wordpress 中设置一个自定义帖子类型插件,该插件允许选择一个页面,该页面将以与设置“帖子页面”设置相同的方式生成帖子列表,以便在访问页面的 url 时生成自定义帖子类型存档页面而不是页面内容。

我可以选择要使用设置的页面,它使用页面 slug 作为自定义帖子类型的重写 slug,我只是不知道如何让它显示存档而不是页面内容。

4

2 回答 2

0

基于 WordPress Template Hierarchy,假设您使用 Foo 类型的自定义帖子,您希望将存档代码放入archive-foo.php.

于 2013-10-09T20:29:15.030 回答
0

我有一个可行的解决方案,可能有更好的解决方案,但这适用于顶级页面。基本上,我检查页面的 slug 是否已更改,如果已更改,则刷新重写规则。

add_action( 'init', 'faqmgr_create_post_type' );
function faqmgr_create_post_type() {
    $options=get_option('faqmgr_options', array('faq_page'=>0, 'faq_slug'=>'faq'));
    $updated=false;
    $tpost=get_post( $options['faq_page'], OBJECT );
    if(is_null($tpost)){
        $options=array('faq_page'=>0, 'faq_slug'=>'faq');
    $updated=true;
        update_option('faqmgr_options', $options);
    }else{
        if($options['faq_slug']!=$tpost->post_name){
            $options['faq_slug']=$tpost->post_name;
            $updated=true;
        }
    }
    register_post_type( 'faq',
        array(
            'labels' => array(
                'name' => __( 'FAQs' ),
                'singular_name' => __( 'FAQ' ),
                'add_new_item' => __( 'Add FAQ' ),
                'edit_item' => __( 'Edit FAQ' ),
                'new_item' => __( 'New FAQ' ),
                'view_item' => __( 'View FAQ' ),
                'search_items' => __( 'Search FAQs' ) 
            ),
        'public' => true,
        'exclude_from_search'=>true,
        'has_archive' => true,
        'rewrite' => array(
            'slug' => $options['faq_slug'],
            'with_front' => false
        ),
        'supports' => array(
            'title',
            'editor',
            'thumbnail'
        )
        )
    );

    if($updated=true;){
        flush_rewrite_rules( false );
    }

}
于 2013-10-10T12:38:37.500 回答