0

0

自定义字段的WP_Query参数

WBOY

WBOY

发布时间:2023-08-29 20:21:11

|

1327人浏览过

|

来源于php中文网

原创

自定义字段的wp_query参数

如果您一直在关注本系列,您将了解 WP_Query 的结构以及如何使用它来编写自定义查询。为了能够定义 WP_Query 从数据库中获取的内容,您需要知道可以使用哪些参数来查询数据。

WP_Query 有大量可能的参数,这使得它非常灵活。由于您可以使用它来查询 wp_posts 表中保存的任何内容,因此它具有您可能想要在内容上运行的每个查询排列的参数。

在本教程中,我将了解自定义字段的参数。但首先,快速回顾一下如何在 WP_Query 中编写参数。

回顾 WP_Query 中参数的工作原理

在开始之前,让我们快速回顾一下参数在 WP_Query 中的工作原理。当您在主题或插件中编写 WP_Query 时,您需要包含四个主要元素:

  • 查询的参数,使用本教程将介绍的参数
  • 查询本身
  • 循环
  • 结束:关闭 ifwhile 标签并重置帖子数据

实际上,这将类似于以下内容:

have_posts() ) {

    // Start looping over the query results.
    while ( $query->have_posts() ) {

        $query->the_post();

        // Contents of the queried post results go here.

    }

}

// Restore original post data.
wp_reset_postdata();

?>

这些参数告诉 WordPress 从数据库中获取哪些数据,我将在此处介绍这些数据。所以我们在这里关注的是代码的第一部分:

$args = array(
    // Arguments for your query.
);

如您所见,参数包含在一个数组中。在学习本教程时,您将学习如何对它们进行编码。

编写你的参数

数组中的参数有一种具体的编码方式,如下:

$args = array(
    'parameter1' => 'value',
    'parameter2' => 'value',
    'parameter3' => 'value'
);

您必须将参数及其值括在单引号中,在它们之间使用 => ,并用逗号分隔它们。如果您犯了这个错误,WordPress 可能不会将所有参数添加到查询中,否则您可能会看到白屏。

自定义字段参数

自定义字段,也称为帖子元数据,可以使用名为 WP_Meta_Query 的单独类。这意味着,如果您只想对帖子元数据运行查询,则可以使用 WP_Meta_QueryWP_Query(访问 WP_Meta_Query),而如果您想查询帖子元数据和其他项目(例如帖子类型),请使用 WP_Query

WP_Meta_Query 类已在本系列的其他部分详细介绍,因此我不会在这里详细介绍该类,但使用该类与 WP_Query 之间的主要区别是WP_Query 允许您创建一些简单的参数,而无需使用嵌套数组。

简单自定义字段查询的参数

使用WP_Query查询自定义字段的主要参数如下:

  • meta_key (string):自定义字段键。
  • meta_value (字符串):自定义字段值。
  • meta_value_num (number):自定义字段值。
  • meta_compare (string):用于测试 'meta_value' 的运算符。可能的值为 '=''!='''>''>= ', ', ', '喜欢', '不喜欢', '在', '不在', '之间', '不在之间', '不存在', 'REGEXP', '不存在 REGEXP''RLIKE '.默认值为 '='

使用这些参数进行简单的自定义字段查询。因此,例如要输出具有键 key1 (无论其值如何)的自定义字段的帖子,您可以使用以下参数:

$args = array(
    'meta_key' => 'key1'
);

这将返回带有 key1 键的自定义字段的所有帖子,无论值是什么。

如果您想指定一个值,您可以为此添加一个额外的参数:

$args = array(
    'meta_key' => 'key1',
    'meta_value' => 'value1'
);

这将返回带有自定义字段的所有帖子,其中包含 key1 键和 value1 值。

或者,您可以使用值为 value1 的自定义字段获取所有帖子,无论键是什么。当您有多个具有重复值的自定义字段键时,这可能很有用:

$args = array(
    'meta_value' => 'value1'
);

正如您所看到的,您可以只查询自定义字段的键或值,而不必总是指定两者。

论小文
论小文

可靠的论文写作助手,包含11种学术写作类型,万字论文一键生成,可降重降AIGC,参考文献真实可标注,图表代码均可自定义添加。

下载

使用meta_compare参数

您可能已经注意到上面的 meta_compare 参数有很多潜在参数,并且它们的使用可能并不总是立即显而易见。让我们看一下您可能最常使用的那些:

  • =:等于。这是默认设置,因此如果您不包含 meta_compare 参数,则 WP_Query 将使用此参数。
  • !+: 不等于。
  • >: 大于。
  • >=: 大于或等于。
  • : 小于。
  • : 小于或等于。
  • LIKE:这将忽略您使用的值的大小写,您还可以将其与通配符一起使用来查找与您要查找的值类似的值。
  • NOT LIKE:工作方式与 LIKE 类似,但查询相反!
  • IN:将其与“value”参数中的数组一起使用,以查找具有数组中一个或多个值的帖子。
  • BETWEEN:与两个数值的数组(在 meta_value 参数中指定)一起使用,以查找自定义字段值在这些值之间(但不等于它们)的帖子。
  • NOT BETWEEN:查询带有由 meta_value 参数指定的两个数值数组之外的自定义字段值的帖子。

让我们看一下该参数的一些示例用法。

首先,您可以使用 meta_compare 参数排除自定义字段键或值。因此,要获取除带有 key1 键的自定义字段之外的所有帖子,您可以使用以下命令:

$args = array(
    'meta_key' => 'key1',
    'meta_compare' => '!='
);

您还可以使用 'NOT IN' 值作为 meta_compare 参数,该参数也可以与多个值的字符串一起使用:

$args = array(
    'meta_key' => 'key1, key2',
    'meta_compare' => 'NOT IN'
);

这将查询没有带有 key1key2 值的自定义字段的帖子。如果您想要更具体,也许查询具有一个自定义字段而不是另一个自定义字段的帖子,您可以使用嵌套数组,我们很快就会介绍这一点。

上面的示例使用非数字值。您可以将 WP_Query 与具有数值的自定义字段一起使用,不仅可以获取具有该值的自定义字段的帖子,还可以获取具有更高或更低值的自定义字段的帖子。例如,如果您要查找高于或低于给定价格的商品,您可以在商店中使用此功能。

要查找自定义字段值高于给定数字的帖子,请使用如下内容:

$args = array(
    'meta_key' => 'numkey',
    'meta_value' => '100',
    'meta_compare' => '>'
);

这将返回带有 numkey 键且值超过 100 的自定义字段的所有帖子。如果您想查询 100 或以上的值,您可以使用 'meta_compare' => '>='

您还可以查找自定义字段的值介于您使用 BETWEEN 参数和数组指定的两个数字之间的帖子:

$args = array(
    'meta_key' => 'numkey',
    'meta_value' => array (
        '100',
        '200'
    ),
    'meta_compare' => 'BETWEEN'
);

这将找到 numkey 自定义字段中的值在 100 到 200 之间的所有帖子。

嵌套自定义字段查询

如果要查询多个自定义字段或使用多个运算符,可以使用嵌套数组。

它们采用以下结构:

$args = array(
    'meta_query' => array(
        'relation' => '', // Optional argument.
        array(
            // `meta_query` arguments go here.
        )
    )
);

WP_Query 中构建 'meta_query' 参数的方式与使用 WP_Meta_Query 类的方式完全相同,这将在本系列的后续教程中介绍,因此我不会在这里重复。

自 WordPress 4.1 版起,您还可以使用多层嵌套数组来创建更加复杂和精确的查询。这些看起来像这样:

$args = array(
    'meta_query' => array(
        'relation' => '', // Optional argument.
        array(
            'relation' => '',
            array (
                // First set of `meta_query` arguments go here.
            ),
            array (
                // Second set of `meta_query` arguments go here.
            )
        )
    )
);

这使您可以在查询中的不同级别使用不同的关系,例如查询在一个自定义字段键中包含某个值的帖子,或在另一个自定义字段键中查询两个值同时存在的帖子。 WP_Meta_Query 类教程(本系列的一部分)对此进行了更详细的介绍,并附有示例。

摘要

使用 WP_Query 类来查询帖子的元数据(或自定义字段)为您提供了很大的灵活性,多个潜在参数与多个运算符相结合,可以帮助您准确地查询数据库按照您想要的方式进行。

如果您只想在查询中使用帖子元数据参数(而不是将其与其他参数结合使用,例如对于帖子类型),您还可以使用 WP_Meta_Query 类,稍后将介绍该类在这个系列中。

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

0

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

2

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

10

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

2

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

63

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

32

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

73

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

20

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第三期培训_PHP开发
第三期培训_PHP开发

共116课时 | 25.9万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号