问题描述
- 我使用(wordpress 自定义帖子类型)创建了一个简单的纪念帖子目录
- 设置已将存档设置为 - TRUE
- 创建了一个 single-memorial-wall.PHP
- 创建了 archive-memorial-wall.PHP
一切正常,但 Yoast 无法帮助我的客户对此存档页面进行 SEO,因为它没有将自身附加到的页面或类别,因此(查看源代码图像)页面标题不正确,没有显示该页面的详细描述。
所以我想,我可以对它进行排序,创建一个自定义分类法...(下面的代码),然后为这些帖子类型设置默认值。
然而,仅仅通过创建分类法,我只是增加了更多不必要的复杂性,客户当然必须创建一个类别类型,并将每个帖子附加到它,就像普通帖子一样。 (即使所有自定义帖子都只会归入该分类法)。
CPT 的原因是为客户提供一个简单的仪表板,而无需勾选类别,他创建的简单帖子始终附加到正确的类别存档,并且可以 SEO 索引。
我在这里遗漏了什么...如果我创建的分类区域不允许进一步分类并且只是 has_archive 的 SEO 所在的地方,那就太好了。
function custom_memorial_post_type()
{
$args = array(
'public' => true,'publicly_queryable' => true,'show_ui' => true,'exclude_from_search' => true,'show_in_nav_menus' => false,'has_archive' => true,'hierarchical' => true,'labels' => array(
'name' => 'Memorials','singular_name' => 'Memorial','add_new' => __('Add A Memorial'),'add_new_item' => __('New Memorial'),'edit_item' => __('Edit The Memorial'),'new_item' => __('New Memorial'),'all_items' => __('All Memorials'),'view_items' => __('View Memorials'),'menu_name' => 'Memorials'
),'supports' => array(
'title','custom-fields','post-formats'
),'description' => 'Pet memorial','menu_position' => 22,'menu_icon' => 'dashicons-format-image',);
register_post_type('memorial-wall',$args);
}
add_action('init','custom_memorial_post_type');
function memorial_wall_taxonomy() {
$args = array(
'labels' => array(
'name' => 'Memorial Wall','singular_name' => 'Memorial Wall','parent_item' => __('Parent Memorial Wall Category'),'parent_item_colon' => __('Parent Memorial Wall Category:'),'edit_item' => __('Edit The Memorial Wall Category'),'update_item' => __('Update The Memorial Wall Category'),'add_new_item' => __('Add New Memorial Wall Category'),'new_item_name' => __('New Memorial Wall Category'),'menu_name' => 'Memorials Wall SEO'
),'public' => true,'hierarchical' => true
);
register_taxonomy('memorial-taxonomy',array('memorial-wall'),$args);
}
add_action( 'init','memorial_wall_taxonomy');
解决方法
如果我创建的分类区域不允许进一步分类并且只是 has_archive 的 SEO 所在的地方,那就太好了。
您可以使用 capabilities
参数指定一组功能,并且从 Wordpress 5.5 开始,您可以使用 default_term
参数设置默认术语。因此创建只读/不可见分类法。
$capabilities = array(
'manage_terms' => '',//default: manage_categories
'edit_terms' => '',//default: manage_categories
'delete_terms' => '',//default: manage_categories
'assign_terms' => '',//default: edit_posts
);
$default = array(
'name' => '_your_custom_term_name_','slug' => '_your_custom_term_slug_','description' => '_your_custom_term_description_',);
$args = array(
//...other arguments
'capabilities' => $capabilities,'default_term' => $default,);
一切都不是粉红色的和漂亮的,因为 default_term
是相对较新的,已报告了一些错误。您可以阅读有关它的更多信息 here on the Wordpress ticket reporting platform 例如 ticket n°51666。我还写了一篇关于它的帖子:Wordpress,default_term parameter for register_taxonomy,checkbox not visually checked