0

0

WP_Query参数:作者、搜索、密码和权限

王林

王林

发布时间:2023-09-03 08:41:11

|

1297人浏览过

|

来源于php中文网

原创

到目前为止,在本系列中,您已经了解了可以与 wp_query 类一起使用的参数选择,以按帖子类型、类别、标签、元数据、日期、状态等选择帖子更多。

在关于 WP_Query 参数的最后一个教程中,我将介绍一些不常用的参数,这些参数可以为您的查询提供更大的灵活性。

我们将在此处介绍的参数用于:

  • 作者
  • 搜索
  • 密码
  • 权限
  • caching
  • 返回字段

在开始之前,让我们快速回顾一下如何使用 WP_Query 编写参数。

回顾 WP_Query 中的参数如何工作

当您在主题或插件中编写 WP_Query 时,您需要包含四个主要元素:

  • 查询的参数,使用本教程将介绍的参数
  • 查询本身
  • 循环
  • 结束:关闭 if 和 while 标签并重置发布数据

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

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 可能不会将所有参数添加到查询中,否则您可能会看到白屏。

作者参数

有四个参数可以用于按作者查询:

  • author (int):使用作者 ID
  • author_name (字符串):使用“user_nicename”(不是名称)
  • author__in (数组):使用作者 ID
  • author__not_in (数组)

第一个 author 允许您通过提供作者 ID 来查询一个或多个作者的帖子:

$args = array(
    'author' => '2'
);

上面的代码查询ID为2的作者的所有帖子。

您还可以使用字符串来查询多个作者的帖子:

$args = array(
    'author' => '1, 2'
);

如果要按名称查询,可以使用 author_name 参数:

$args = array(
    'author_name' => 'rachelmccollin'
);

此参数采用数据库中 user_nicename 字段的值作为其参数,该值在用户管理屏幕中显示为昵称:

重写后的标题为:WP_Query参数:作者、搜索、密码和权限

请注意,由于用户可以编辑此内容,因此使用 author 会更安全参数(如果您认为您的用户可能会更改它)。

您还可以查询一系列作者的帖子:

$args = array(
    'author__in' => array(
        '1',
        '2'
    )
);

上面将查询两位作者的帖子: ID 为 12 的作者,给出的结果与我在 author 参数上面。

最后,您可以使用 author__not_in 参数排除一位或多位作者的帖子。下面的参数查询除作者 1 之外的所有帖子:

$args = array(
    'author__not_in' => array( '1' )
);

或者您可以排除多个作者:

$args = array(
    'author__not_in' => array(
        '1',
        '2'
    )
);

或者,您可以使用 author 参数,并在作者 ID 前面使用减号来排除作者:

中国电子商务企业版
中国电子商务企业版

数据与动网论坛数据捆绑,动网论坛已经去掉上传组件,商城主体打了远程冰河等暴力攻击补丁功能:1 评论登陆审核 很多免费版本不带的2 自定义搜索3 vip与会员分面板 分权限4 多商家入驻 分别发布商品 下订单5 独有的域名主机系统 更易操作用户名、密码均为admin

下载
$args = array(
    'author' => '-2'
);

搜索参数

搜索的参数只有一个,就是s。使用它来查询与搜索词匹配的帖子。例如,要查询包含关键字“我最喜欢的食物”的帖子,您可以使用:

$args = array(
    's' => 'my favorite food'
);

例如,您可能会发现这对于搜索具有相似关键字的相关帖子很有用。

密码参数

您可以使用两个密码参数来查询有或没有密码保护的帖子:

  • has_password (bool)
  • post_password (字符串)

第一个参数 has_password 允许您查询有或没有密码保护的帖子。因此,要查询受密码保护的帖子:

$args = array(
    'has_password' => true
);

对于没有密码的帖子:

$args = array(
    'has_password' => false
);

您还可以通过密码本身进行查询,使用 post_password 参数:

$args = array(
    'post_password' => 'mypassword'
);

权限参数

权限只有一个参数,perm,用于查询当前用户有权限阅读的帖子。它采用 'readable' 值,旨在与其他参数结合使用。

因此,要查询受密码保护的帖子并仅在用户具有适当权限时才显示它们,您可以使用以下命令:

$args = array(
    'has_password' => true,
    'perm' => 'readable'
);

或者,如果当前用户有权查看草稿帖子,则可以使用以下命令:

$args = array(
    'post_status' => 'draft',
    'perm' => 'readable'
);

缓存参数

共有三个缓存参数,它们会阻止查询检索到的数据添加到缓存中:

  • cache_results (boolean):帖子信息缓存
  • update_post_meta_cache (boolean):发布元信息缓存
  • update_post_term_cache (boolean):帖子术语信息缓存

这三个选项的默认值都是 true:如果您希望将数据添加到缓存中,则不需要使用它们。

因此,要显示 product 帖子类型的所有帖子,但不将帖子信息添加到缓存中,您可以使用以下命令:

$args = array(
    'post_type' => 'product',
    'cache_results' => false
);

通常您不应该使用这些参数,因为将发布数据添加到缓存是一个很好的做法。但是,您有时可能希望检索帖子,以便只使用一些帖子数据,在这种情况下,您不需要缓存中的其余帖子数据。例如,当您只想输出带有链接的帖子标题列表时,在这种情况下,您不需要将帖子术语数据或元数据添加到缓存中:

$args = array(
    'post_type' => 'product',
    'update_post_meta_cache' => false,
    'update_post_term_cache' => false
);

返回字段参数

您可以使用 fields 参数来指定从查询中返回哪些字段。这可以节省从数据库中的字段返回的数据,而在循环中输出数据时不需要这些数据。

默认情况下是返回所有字段,但是您有两个选项可以使用 fields 参数来限制这一点。首先,'ids' 参数:

$args = array(
    'fields' => 'ids'
);

这只会返回帖子 ID 数组,不会返回其他字段。如果您想在循环中输出任何内容(例如帖子标题),则必须使用 get_the_title ($post->ID); 等函数来输出标题,这将处理事情的方式很冗长。

您可以使用的另一个参数获取帖子 ID 与子帖子 ID 的关联数组:

$args = array(
    'fields' => 'id=>parent'
);

您可以使用它根据您的其他参数及其子参数查询帖子。

摘要

WP_Query 系列的这一部分介绍了 WP_Query 类的最终参数集。您可以使用它们按作者、密码保护状态或密码本身和搜索词查询帖子,并设置是否将查询结果添加到缓存以及查询返回哪些字段。

在本系列的下一部分中,您将看到一些在主题或插件中使用 WP_Query 的有效示例。

相关专题

更多
java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

346

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

19

2025.11.30

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

711

2023.08.22

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

81

2023.09.25

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

81

2023.09.25

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

248

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

205

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1435

2023.10.24

小游戏4399大全
小游戏4399大全

4399小游戏免费秒玩大全来了!无需下载、即点即玩,涵盖动作、冒险、益智、射击、体育、双人等全品类热门小游戏。经典如《黄金矿工》《森林冰火人》《狂扁小朋友》一应俱全,每日更新最新H5游戏,支持电脑与手机跨端畅玩。访问4399小游戏中心,重温童年回忆,畅享轻松娱乐时光!官方入口安全绿色,无插件、无广告干扰,打开即玩,快乐秒达!

30

2025.12.31

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Pandas 教程
Pandas 教程

共15课时 | 0.9万人学习

ECMAScript6 / ES6---十天技能课堂
ECMAScript6 / ES6---十天技能课堂

共25课时 | 1.9万人学习

php-src源码分析探索
php-src源码分析探索

共6课时 | 0.5万人学习

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

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