B2主题自带了一个简单文章SEO功能,允许设置文章的SEO标题、关键词和描述,如下图所示:
默认情况下,B2主题的这个功能只对某些文章类型生效,我们在 b2/Modules/Settings/Seo.php
文件中可以看到如下代码:
$seo_meta = new_cmb2_box(array(
'id' => 'single_post_seo_side_metabox',
'title' => __( 'SEO设置', 'b2' ),
'object_types' => array( 'post','shop','page','document','links'), // Post type
'context' => 'side',
'priority' => 'high',
'show_names' => true,
));
在代码的第4行就是设置在哪些文章类型显示SEO设置,我们看到,B2 3.8.3 版本及以下版本的主题中,并没有添加过滤钩子。
所以,我们需要修改上面代码的第4行,添加一个钩子b2_single_seo_post_type
,修改后的代码为:
$seo_meta = new_cmb2_box(array(
'id' => 'single_post_seo_side_metabox',
'title' => __( 'SEO设置', 'b2' ),
'object_types' => apply_filters('b2_single_seo_post_type', array( 'post','shop','page','document','links')), // Post type
'context' => 'side',
'priority' => 'high',
'show_names' => true,
));
以上添加钩子的代码,倡萌已经提交给B2作者春哥,2022年9月12日以后发布的B2版本会默认包含。
有了钩子以后,我们就可以通过下面的代码片段修改文章类型,将代码添加到子主题的 functions.php 即可:
/*
* 将B2的SEO功能添加自定义文章类型
* https://www.wpdaxue.com/docs/b2/b2-dev/single-seo-post-type
*/
function b2child_single_seo_post_type( $post_types ) {
$post_types = array('post','shop','page','document','links','newsflashes');
return $post_types;
}
add_filter('b2_single_seo_post_type', 'b2child_single_seo_post_type' );
注意看代码的第7行的数组array()的值,就是你希望显示的文章类型数组,在上面的的样例中,我们添加了【快讯newsflashes】这个类型。
如果你要查看文章类型的值,可以在后台点击对应文章类型导航菜单下的第一个子菜单,比如页面-全部页面,就可以在网址中看到 /wp-admin/edit.php?post_type=page
,其中 post_type=
后面的值,就是文章类型的值了,比如页面就是 page
。