站点图标 西部盒子博客

WordPress使用postmeta筛选/排序的一些坑

wordpress可以通过内置的meta_query来非常方便的执行一些文章数据的筛选以及排序操作;

具体方法不再描述,今天主要来聊一下我们在使用过程中遇到的坑:

当部分post_meta没有设置时,会获取不到对应的文章数据;

作数据筛选时的代码:

如果我们要不显示自定义栏目notshow等于yes的文章,默认情况下我们的代码如下:
[crayon-6741a138925e5717586628/]
这时候如果我们有文章没有设置notshow自定义字段的话,也应该显示出来,不过问题出现了,这样调用是不会显示未设置notshow字段的文章的,修改过的代码如下:
[crayon-6741a138925ef250016432/]
这样的话,就能将未设置notshow字段的文章也显示出来;

当然还有个终极解决方法,文末会给出方法的,也是我们比较推荐的方法。

 

按自定义字段排序

如按views(文章阅读数)排序代码如下:
[crayon-6741a138925f3049275108/]
如果有部分文章未设置有views这个自定义栏目键值的话,列表就调用不出来。

当然我们还可以自定义SQL 语句来进行查询,但是这个专业性太强了,小白可以略过;

 

最终我们建议采用的方法是,为所有的没有自定义栏目的文章批量新建这个字段,代码如下:
[crayon-6741a138925f6723342562/]
以上代码,放到主题index.php顶部,访问一次首页即可完成对所有文章的views字段进行创建;

最后一步:在发布文章的时候自动创建该自定义字段:
[crayon-6741a138925f9470373797/]
代码添加到主题根目录的functions.php内即可。

 

退出移动版