欢迎您光临自学哈网,只为分享网络知识教程,供大家学习参考!

「自学哈网」WordPress自定义字段字符串类型转数字排序

作者 : 自学哈 本文共1052个字,预计阅读时间需要3分钟 2022-11-26 共100人阅读
也想出现在这里? 联系我们

刚刚看到泪雪博客还有读者留言问我什么时候更新博客,那就择日不如撞日,分享一下子凡刚刚在 WordPress 开发中遇到的一个情况做个技术分享,WordPress 本身已经具备很好的二次开发接口,但是还是无可避免有时候会用到,就像子凡给我们的网站开发了一个标签页访问统计功能,但是在后台访问量却无法准确的安装访问量排序,所以这就是子凡要解决的问题。

经过一番排除发现给 WordPress 标签自定义字段的参数在数据库中默认都是字符串类型,而对于访问量这种数字排序就需要将字符串转换一下类型,才能够正常的排序。

当然 WordPress 在 wp_query 查询中需要对自定义类型做数据类型排序的可以直接把 meta_value 换成 meta_value_num 就行了。

所有下面子凡把实现的整段代码全部贴出来,方便大家参考学习。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//WordPress 后台标签页面排序
add_filter(\'terms_clauses\', \'fanly_basic_terms_clauses\', 10, 3);
function fanly_basic_terms_clauses($pieces, $taxonomies, $args) {
	global $wpdb,$pagenow;
	if($pagenow == \'edit-tags.php\' && in_array( \'post_tag\', $taxonomies ) && isset($_GET[\'orderby\']))
	switch($_GET[\'orderby\']){
		case \'views\':
			$pieces[\'join\']		.= " INNER JOIN $wpdb->termmeta AS tm ON t.term_id = tm.term_id";
			$pieces[\'where\']	.= " AND tm.meta_key = \'views\'";
			//$pieces[\'orderby\']	= \' ORDER BY tm.meta_value \';//这是没有转换类型的排序
			$pieces[\'orderby\']	= \' ORDER BY CAST(tm.meta_value AS UNSIGNED) \';//转换类型排序(这才是本文要分享的重点)
		break;
	}
	return $pieces;
}

注意查看代码中的注释信息,其实就是使用了 SQL 中的 CAST 方式,本来想要转换成数字类型发现居然报错了,后来换成 UNSIGNED 就成功了,我自己也比较懵,不过反正解决问题了,就不继续深入了。

本站声明:
本站所有资源来源于网络,分享目的仅供大家学习和交流!如若本站内容侵犯了原著者的合法权益,可联系邮箱976157886@qq.com进行删除。
自学哈专注于免费提供最新的分享知识、网络教程、网络技术的资源分享平台,好资源不私藏,大家一起分享!

自学哈网 » 「自学哈网」WordPress自定义字段字符串类型转数字排序
也想出现在这里? 联系我们
© 2022 Theme by - 自学哈网 & WordPress Theme. All rights reserved 浙ICP备2022016594号