建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

一个函数就搞定 WordPress 自定义分类选项开发(怎样在WordPress功能文件文件中自定义获取相关文章代码)

GG网络技术分享 2025-03-18 16:12 0


一个函数就搞定 WordPress 自定义分类选项开发

上一篇我们介绍了一个函数就搞定 WordPress 自定义文章选项开发,今天继续,给大家讲解如何使用一个函数就搞定 WordPress 自定义分类选项开发,也是一个函数,非常方便快速。

WordPress 自定义分类选项是在 WordPress 后台分类新增和编辑页面,给分类添加一些字段选项来实现功能,比如分类的 SEO 标题,关键字和描述等,所以要学会快速开发 WordPress 自定义分类选项是 WordPress 二次开发必备的技能。

这次的教程会简单直接一点,原来我们都会说 WordPress 原生的开发比较麻烦,这次不再重复了,我们直接讲解怎么使用 WPJAM Basic 进行 WordPress 自定义分类选项开发,因为原生开发有点复杂,如果介绍的话,文章篇幅过长,但是我们的重点是基于 WPJAM Basic 进行二次开发,所以直接来。

使用 WPAJAM BASIC 创建自定义选项

我们继续使用一个函数就搞定 WordPress 设置页面开发里面创建的「WPJAM SEO」插件来演示怎么创建自定义分类选项页面,今天我们会创建分类的 SEO 选项,让你输入分类的 SEO 标题,关键字和描述。

直接上代码:

add_action('plugins_loaded', function(){// 所有插件都已经加载

if(!did_action('wpjam_loaded')){// 确保已加载 WPJAM Basic 插件

return;

}

wpjam_register_term_option('seo', [

'title'=> 'SEO设置',// 自定义选项标题

'list_table'=> true,// 后台分类列表页也支持设置

'page_title'=> 'SEO设置',// 分类列表点击弹窗的标题

'submit_text'=> '设置',// 弹窗的提交按钮名称

'fields'=> [

'seo_title'=> ['title'=>'SEO标题','type'=>'text','class'=>'large-text','placeholder'=>'不填则使用标题'],

'seo_description'=> ['title'=>'SEO描述','type'=>'textarea'],

'seo_keywords'=> ['title'=>'SEO关键字','type'=>'text','class'=>'large-text']

]

]);

});

代码都加了注释,懂得同学应该已经知道怎么做了,还有些困惑的同学,请听我解释 ,首先还是先确保 WPJAM Basic 已加载,这方面一个函数就搞定 WordPress 设置页面开发中已经做了详细的介绍,这里就不再赘述了。

wpjam_register_term_option

这个就是标题中说的那个牛逼的函数,是的,我们只用了 wpjam_register_term_option 这一个函数就在 WordPress 后台搞定自定义分类选项:

  • title:这个参数定义自定义选项的标题。
  • list_table:定义后台分类列表页是否也支持通过弹窗设置
  • fields:那么这个自定义选项框有哪些字段呢?就是这个参数决定的,这里定义了两个输入框和一个文本框。

和自定义文章选项不同,分类新增和编辑页面没有 meta_box 的,字段是直接展示的,所以上面代码就是在分类列表和编辑页新增三个字段,分别是「SEO标题」,「SEO描述」和「SEO关键字」,我截图一下新增页面的字段:

然后在分类列表页右侧的分类列表也可以进行设置操作:

点击上面「SEO设置」按钮也可以进行同样的设置:

在页面上使用自定义分类选项

创建了选项之后,那么我们就要把他们用起来,WordPress 提供了获取分类自定义字段的函数:

get_term_meta($term_id, $met_key, $single);// 获取分类自定义字段

首先把在分类/标签/自定义分类页将页面标题改成上面定义的「SEO标题」:

add_filter('document_title', function($title){

if((is_category() || is_tag() || is_tax()) && get_query_var('paged') < 2){

return get_term_meta(get_queried_object_id(), 'seo_title', true) ?: $title;

}

return $title;

});

然后把「SEO描述」和「SEO关键字」输出到分类/标签/自定义分类页的 head 中:

add_action('wp_head', function(){

if((is_category() || is_tag() || is_tax()) && get_query_var('paged') < 2){// 分类/标签/自定义分类页并且第一页

foreach(['description', 'keywords'] as $type){

if($meta_value = get_term_meta(get_queried_object_id(), 'seo_'.$type, true)){

echo "<meta name='{$type}' content='{$meta_value}' />\\n";// 只有设置才输出

}

}

}

});

就是这么简单,如果你是 WordPress 主题或者插件开发者,使用 WPJAM Basic 进行二次开发都是超简单的一件事情,我会把二次开发做成一个专题,下篇教程预告:一个函数搞定 WordPress 自定义分类列表自定义栏目开发

怎样在WordPress功能文件文件中自定义获取相关文章代码

到底是该选择WordPress插件还是在functions.php中添加代码?相对来说如果是需求的功能通过插件是可以满足的,那么使用插件的那是无可厚非的。另外如果您所需要的功能不可用插件,同时通过添加代码段又是非常简单的情况,那么就可以选择到功能文件中添加代码段的方式了。今天就来看一看怎样在functions.php中添加一段获取相关文章的代码。

将下面的代码插入functions.php中,具体操作如下:

获取相关文章的策略: 手动指定 > 标签 >分类 > 随机

//相关文章

function add_related_posts($content){

return $content . wp_related_posts();

}

add_filter (\'the_content\', \'add_related_posts\'); //hook

function wp_related_posts(){

global $post;

$num = 5;//文章数量

$counter = 1;

$exclude_id = get_post_meta($post->ID,\'related\',true);//获取手动置顶的相关文章

if ($exclude_id){

$args = array(

\'post_status\' => \'publish\',

\'post_type\' => array(\'post\'),

\'post__in\' => explode(\',\', $exclude_id),

\'posts_per_page\' => $num

);

$posts = get_posts($args);

foreach($posts as $sb){

$output .= \'<li><a href=\"\' . get_permalink($sb->ID) . \'\">\' . $sb->post_title . \'</a></li>\';//可自定义样式

$i++;

}

}

if( $i < $num){//自定义文章数不足后通过分类和标签处理

$tagsid = array();

$catid = array();

$thisid[] = $post->ID;

$posttags = get_the_tags();

$catids = get_the_category();

if(!empty($posttags)) {

foreach($posttags as $tag) {

$tagsid[] = $tag->term_id;

}

}

if(!empty($catids)) {

foreach($catids as $cat) {

$catid[] = $cat->term_id;

}

}

$args = array(

\'post_type\' => \'post\',

\'post__not_in\' => $thisid,

\'ignore_sticky_posts\' => 1,

\'posts_per_page\' => ($num - $i),

\'tax_query\' => array(

\'relation\' => \'OR\',//改成AND则必须是同标签同分类下

array(

\'taxonomy\' => \'post_tag\',

\'field\' => \'term_id\',

\'terms\' => $tagsid,

),

array(

\'taxonomy\' => \'category\',

\'field\' => \'term_id\',

\'terms\' => $catid,

),

),

);

$rsp = get_posts($args );

foreach($rsp as $sb){

$output .= \'<li><a href=\"\' . get_permalink($sb->ID) . \'\">\' . $sb->post_title . \'</a></li>\';//可自定义样式

$i++;

}

}

$final = \'<h3>相关文章</h3><ul>\' . $output . \'</ul>\';

return $final;

}

如需加入自定义相关文章,只需新建自定义栏目,加入文章id即可,多篇文章用英文 , 隔开

标签:

提交需求或反馈

Demand feedback