前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WordPress自定义字段字符串类型转数字排序

WordPress自定义字段字符串类型转数字排序

原创
作者头像
张子凡
发布2022-11-03 14:14:57
6290
发布2022-11-03 14:14:57
举报
文章被收录于专栏:张子凡张子凡

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

wordpress problems
wordpress problems

经过一番排除发现给 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 就成功了,我自己也比较懵,不过反正解决问题了,就不继续深入了。

除非注明,否则均为泪雪博客原创文章,禁止任何形式转载

本文链接:https://zhangzifan.com/wordpress-orderby-cast.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站建设
网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档