自定义帖子类型等效于 Wordpress 中的“帖子页面”设置

Posted

技术标签:

【中文标题】自定义帖子类型等效于 Wordpress 中的“帖子页面”设置【英文标题】:Custom Post Type equivalent for "Posts Page" setting in Wordpress 【发布时间】:2013-10-17 09:11:33 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我不想让它使用特定的存档模板显示,默认值很好。它的功能类似于设置 wordpress“帖子页面”设置,这样当在插件选项页面中选择页面时,转到页面的 URL 会产生自定义帖子类型的存档,就像 wordpress 做常规一样帖子和您选择作为“帖子页面”的页面 所以澄清一下,您已经能够在插件选项中设置您的自定义存档 URL,当您转到该 URL 时,您只是看到一个自定义帖子的内容?您是否在自定义帖子类型声明中将 has_archive 设置为 true?【参考方案2】:

我有一个可行的解决方案,可能有更好的解决方案,但这适用于***页面。基本上我会检查页面的 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 );
    


【讨论】:

以上是关于自定义帖子类型等效于 Wordpress 中的“帖子页面”设置的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress ACF 显示关系问题

WordPress - 无法从自定义帖子类型中的元框获取价值

Wordpress 自定义帖子操作挂钩

Wordpress 自定义帖子类型中的战略问题?

PHP Wordpress自定义帖子类型:帖子网址中的POST ID

markdown WordPress中的自定义帖子类型和分类