我在 WPJAM Basic 插件的介绍页面就说过,WPJAM Basic 是我们 WordPres 果酱团队进行二次开发的基础,甚至花生小店这么复杂的电商小程序 SaaS 平台就是在 WPJAM Basic 的基础上开发出来的。
使用 WPJAM Basic 进行 WordPRess 二次开发可以非常快,我们接的很多项目,在客户需求清晰的情况下,基本上一个晚上就可以搞定后台界面的开发,很多客户对此都会感到非常惊讶,对我们评价非常高。
有些小伙伴对此深表怀疑,嘿嘿,没关系,下面我们通过一个专题,给大家讲解如何使用 WPJAM Basic 进行快速二次开发,让你也能一个晚上搞定后台界面的开发。
第三讲:一个函数就搞定 WordPress 后台文章列表栏目开发
WordPress 后台文章列表栏目是指在 WordPress 后台文章列表页面,给文章列表表格添加一些栏目来显示数据,比如文章的浏览数,是否设置了 SEO 信息等,所以学会快速开发 WordPress 后台文章列表栏目开发是 WordPress 二次开发的必备的技能。
WordPress 后台文章列表栏目开发有点烦
如果我们使⽤ WordPress 原⽣的代码给后台⽂章列表页⾯添加一列的话,需要使用两个接口:
使用 manage_{$post_type}_posts_columns 接口添加栏目表头:
代码语言:javascript复制add_filter('manage_post_posts_columns', function($columns){
$columns['views'] = '浏览';
return $columns;
});
通过 manage_{$post_type}_posts_custom_column 接口显示栏目数据:
代码语言:javascript复制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 );
相对前面两个的开发算简单,但是需要知道这两个动态的接口。
使用 WPJAM BASIC 创建文章列表栏目
如果和上面一样,比如需要增加一列来显示文章的浏览数,这种只是简单从 post meta 种去取数据,WPJAM Basic 只需要一行就搞定:
代码语言:javascript复制wpjam_register_posts_column('views', ['title'=> '浏览']);
如果复杂一点的例子,获取的数据需要自己处理一下怎么处理呢?
我们继续使用一个函数就搞定 WordPress 设置页面开发里面创建的「WPJAM SEO」插件来演示,怎么在文章列表栏目显示设置的 SEO 标题,关键字和描述。
照样直接上代码:
代码语言:javascript复制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($post_id, 'seo_'.$key, true)){
$value .= "n".$seo_value."nn";
}else{
$value .= "未设置n";
}
}
return wpautop($value);
}
]);
});
首先还是先确保 WPJAM Basic 已加载,这方面一个函数就搞定 WordPress 设置页面开发中已经做了详细的介绍,这里就不再赘述了。
wpjam_register_posts_column
这个就是标题中说的那个牛逼的函数,是的,我们只用了 wpjam_register_posts_column
这一个函数就在 WordPress 后台搞定文章列表栏目开发:
title
:这个参数定义文章列表栏目的表头。column_callback
:定义怎么获取数据,如果不定义这个参数,则直接从 post meta 获取数据。。
所以上面代码就是在文章列表页增加「SEO设置」栏目,如果设置文章的 SEO 标题,描述和关键字,就显示出来,如果没有设置,则显示未设置。
搞定,就是这么简单。