将分类详细信息添加到自定义帖子类型 - 获取要显示的 SEO 详细信息

问题描述

  1. 我使用(wordpress 自定义帖子类型)创建了一个简单的纪念帖子目录
  2. 设置已将存档设置为 - TRUE
  3. 创建了一个 single-memorial-wall.PHP
  4. 创建了 archive-memorial-wall.PHP

一切正常,但 Yoast 无法帮助我的客户对此存档页面进行 SEO,因为它没有将自身附加到的页面或类别,因此(查看源代码图像)页面标题不正确,没有显示页面的详细描述。

所以我想,我可以对它进行排序,创建一个自定义分类法...(下面的代码),然后为这些帖子类型设置认值。

然而,仅仅通过创建分类法,我只是增加了更多不必要的复杂性,客户当然必须创建一个类别类型,并将每个帖子附加到它,就像普通帖子一样。 (即使所有自定义帖子都只会归入该分类法)。

CPT 的原因是为客户提供一个简单的仪表板,而无需勾选类别,他创建的简单帖子始终附加到正确的类别存档,并且可以 SEO 索引。

在这里遗漏了什么...如果我创建的分类区域不允许进一步分类并且只是 has_archive 的 SEO 所在的地方,那就太好了。

enter image description here

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