自定义帖子类型等效于 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 - 无法从自定义帖子类型中的元框获取价值