建站教程

建站教程

Products

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

一个函数就搞定 WordPress 后台文章列表自定义栏目开发(不用插件给wordpress分类添加标题,关键词等SEO信息)

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


一个函数就搞定 WordPress 后台文章列表自定义栏目开发

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

WordPress 后台文章列表自定义栏目是指在 WordPress 后台文章列表页面,给文章列表表哥添加一些栏目来显示数据,比如文章的浏览数,是否设置了 SEO 信息等,所以学会快速开发 WordPress 后台文章列表自定义栏目开发是 WordPress 二次开发的必备的技能。

WordPress后台文章列表自定义栏目开发有点烦

如果我们使⽤ WordPress 原⽣的代码给后台⽂章列表页⾯添加一列的话,需要使用两个接口:

使用manage_{$post_type}_posts_columns接口添加栏目表头

add_filter('manage_post_posts_columns', function($columns){

$columns['views'] = '浏览';

return $columns;

});

通过manage_{$post_type}_posts_custom_column 接口显示栏目数据

add_action('manage_post_posts_custom_column' , function ($column, $post_id){

if($column == 'views'){

echo (int)get_post_meta($post_id , 'views' , true);

}

}, 10, 2 );

相对前面两个的开发算简单,但是需要知道这两个接口。

使用 WPAJAM BASIC 创建自定义文章列表栏目

如果和上面一样,需压增加一列来显示文章的浏览数,这种只是简单从 post meta 种去取数据,WPJAM Basic 只需要一行就搞定:

wpjam_register_posts_column('views', ['title'=> '浏览']);

如果复杂一点的例子,获取的数据需要自己处理一下怎么处理呢?

我们继续使用一个函数就搞定 WordPress 设置页面开发里面创建的「WPJAM SEO」插件来演示,怎么在文章栏目显示设置的 SEO 标题,关键字和描述。

直接上代码:

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

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

return;

}

wpjam_register_posts_column('seo', [

'title'=> 'SEO设置',

'column_callback'=> function($post_id){

$value= '';

foreach(['title'=>'SEO标题', 'description'=>'SEO描述', 'keywords'=>'SEO关键字'] as $key => $title){

$value.= '<strong>'.$title.'</strong>:';

if($seo_value = get_post_meta(get_the_ID(), 'seo_'.$key, true)){

$value .= "\\n".$seo_value."\\n\\n";

}else{

$value .= "未设置\\n";

}

}

return wpautop($value);

}

]);

});

首先还是先确保 WPJAM Basic 已加载,这方面一个函数就搞定 WordPress 设置页面开发中已经做了详细的介绍,这里就不再赘述了。

wpjam_register_posts_column

这个就是标题中说的那个牛逼的函数,是的,我们只用了 wpjam_register_posts_column 这一个函数就在 WordPress 后台搞定自定义文章列表栏目:

  • title:这个参数定义自定义文章列表栏目的表头。
  • column_callback:定义怎么获取数据,如果不定义这个参数,则直接从 post meta 获取数据。。

所以上面代码就是在文章列表页增加「SEO设置」栏目:

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

不用插件给wordpress分类添加标题,关键词等SEO信息

做过seo的都知道,标题和关键词,描述是非常重要的,wordpress网站默认分类目录是没有这个seo的功能的。

我们可以通过安装seo插件来解决,但是seo插件功能比较多,设置繁琐,今天给大家分享一个非插件实现分类目录seo功能的方法。

首先,我们需要新增一个文件放到主题文件里面:

<?php

add_action('edit_category_form_fields','category_function');

functioncategory_function(){

if(isset($_GET['action'])&&$_GET['action']=='edit')$value=get_option('cat_set_'.$_GET['tag_ID']);

$title='cat_title';

$keywords='cat_keywords';

$description='cat_description';

?>

<tableclass="form-table"></table>

<h2>自定义SEO信息</h2>

<tableclass="form-table">

<tbody>

<trclass="form-field">

<thscope="row"valign="top"><labelfor="<?phpecho$title?>">标题</label></th>

<td><inputname="<?phpecho$title?>"id="<?phpecho$title?>"type="text"value="<?phpechoesc_attr(stripslashes($value['title']));

?>"><pclass="description">默认调用分类名称作为Head中Title信息。</p>

</td>

</tr>

<trclass="form-field">

<thscope="row"valign="top"><labelfor="<?phpecho$keywords;?>">关键词</label></th>

<td><inputname="<?phpecho$keywords;?>"id="<?phpecho$keywords;?>"type="text"value="<?phpecho$value['keywords'];

?>"><pclass="description">多个关键词用小写逗号“,”分隔开;默认调用分类名称作为Head中KeyWords信息。</p>

</td>

</tr>

<trclass="form-field">

<thscope="row"valign="top"><labelfor="<?phpecho$description;?>">描述</label></th>

<td><textareaname="<?phpecho$description;?>"id="<?phpecho$description;

?>"rows="3"cols="30"><?phpechostripslashes($value['description']);?></textarea><pclass="description">若未设置,将显示为“关于‘某某’分类下的所有文章。”作为Head中Description信息。</p>

</td>

</tr>

</tbody>

</table>

<?php

}

add_action('edit_category','save_category_function');

functionsave_category_function(){

if(isset($_POST['action'])&&isset($_POST['taxonomy'])&&$_POST['action']=='editedtag'&&$_POST['taxonomy']=='category'){

update_option('cat_set_'.$_POST['tag_ID'],array('title'=>$_POST['cat_title'],'description'=>$_POST['cat_description'],'keywords'=>$_POST['cat_keywords'],'template'=>$_POST['cat_template'],'orderby'=>$_POST['cat_orderby'],'per_page'=>$_POST['cat_per_page'],));

}

};

?>

然后,在主题函数function.php中引用

include("seocategory.php");

最后就是前台功能的调用了。

seo12.png

标题调用代码:

if(is_category()){

$cat_id=get_query_var('cat');

$val=get_option("cat_set_$cat_id");

if(!Empty($val)&&$val['title']!=''){

$title=$val['title'].'-'.get_bloginfo('name');

}else{

$title=single_cat_title('',false).'-'.get_bloginfo('name');

}

}

关键词获取:

if(is_category()){

$cat_id=get_query_var('cat');

$val=get_option("cat_set_$cat_id");

if(!Empty($val)&&$val['keywords']!=''){

$keywords=$val['keywords'];

}else{

$keywords=single_cat_title('',false);

}

}

描述获取:

if(is_category()){

$cat_id=get_query_var('cat');

$val=get_option("cat_set_$cat_id");

if(!Empty($val)&&$val['description']!=''){

$description=$val['description'];

}else{

$description=$blog_name."'".single_cat_title('',false)."'";

}

}

上面是分别调用的代码,如果要一起输出可以用下面代码:

//functions.php文件添加到wp_head();

//标题

functionpage_title(){

global$page,$paged;

$title='';

if(get_option('themes_fo2_seo_ht')&&get_option('themes_fo2_seo_on')&&(is_home()||is_front_page())){

$title=get_option('themes_fo2_seo_ht');

}elseif(is_category()){

$cat_id=get_query_var('cat');

$val=get_option("cat_set_$cat_id");

if(!Empty($val)&&$val['title']!=''){

$title=$val['title'].'-'.get_bloginfo('name');

}else{

$title=single_cat_title('',false).'-'.get_bloginfo('name');

}

}else{

$title=trim(wp_title('',false)).'-'.get_bloginfo('name');

}

//Addapagenumberifnecessary:

if($paged>=2||$page>=2)

$title.='-'.sprintf(__('Page%s','frontopen'),max($paged,$page));

echo"";

}

add_action('wp_head','page_title');

//关键字

functionpage_keywords(){

global$s,$post;

$keywords='';

if(is_single()){

if(get_the_tags($post->ID)){

foreach(get_the_tags($post->ID)as$key=>$tag){

$keywordsArr[$key]=$tag->name;

}

$keywords=implode(',',$keywordsArr);

}else{

$keywords=trim(wp_title('',false));

}

//foreach(get_the_category($post->ID)as$category)$keywords.=$category->cat_name.',';

//$keywords=substr_replace($keywords,'',-2);

}elseif(is_home()){$keywords=get_option('themes_fo2_seo_hk');

}elseif(is_tag()){$keywords=single_tag_title('',false);

//}elseif(is_category()){$keywords=single_cat_title('',false);

}elseif(is_category()){

$cat_id=get_query_var('cat');

$val=get_option("cat_set_$cat_id");

if(!Empty($val)&&$val['keywords']!=''){

$keywords=$val['keywords'];

}else{

$keywords=single_cat_title('',false);

}

}elseif(is_search()){$keywords=esc_html($s,1);

}else{$keywords=trim(wp_title('',false));

}

if($keywords){

echo"\\n";

}

}

add_action('wp_head','page_keywords');

//网站描述

functionpage_description(){

global$s,$post;

$description='';

$blog_name=get_bloginfo('name');

if(is_singular()){

if(!empty($post->post_excerpt)){

$text=$post->post_excerpt;

}else{

$text=$post->post_content;

}

$description=trim(str_replace(array("\\r\\n","\\r","\\n"," ",""),"",str_replace("\\"","'",strip_tags($text))));

if(!($description))$description=$blog_name."-".trim(wp_title('',false));

}elseif(is_home()){$description=get_option('themes_fo2_seo_hd');

}elseif(is_tag()){$description=$blog_name."'".single_tag_title('',false)."'";

//}elseif(is_category()){$description=$blog_name."'".single_cat_title('',false)."'";

}elseif(is_category()){

$cat_id=get_query_var('cat');

$val=get_option("cat_set_$cat_id");

if(!Empty($val)&&$val['description']!=''){

$description=$val['description'];

}else{

$description=$blog_name."'".single_cat_title('',false)."'";

}

}elseif(is_archive()){$description=$blog_name."'".trim(wp_title('',false))."'";

}elseif(is_search()){$description=$blog_name.":'".esc_html($s,1)."'的搜索結果";

}else{$description=$blog_name."'".trim(wp_title('',false))."'";

}

$description=mb_substr($description,0,220,'utf-8');

echo"\\n";

}

add_action('wp_head','page_description');

标签:

提交需求或反馈

Demand feedback