首頁 > 後端開發 > php教程 > WP_Query參數:作者、搜尋、密碼和權限

WP_Query參數:作者、搜尋、密碼和權限

王林
發布: 2023-09-03 08:42:01
原創
1120 人瀏覽過

到目前為止,在本系列中,您已經了解了可以與WP_Query 類別一起使用的參數選擇,以按帖子類型、類別、標籤、元資料、日期、狀態等選擇帖子更多。

在關於 WP_Query 參數的最後一個教學中,我將介紹一些不常用的參數,這些參數可以為您的查詢提供更大的靈活性。

我們將在此處介紹的參數用於:

  • 作者
  • 搜尋
  • 密碼
  • 權限
  • caching
  • 返回欄位

在開始之前,讓我們快速回顧一下如何使用 WP_Query 編寫參數。

回顧 WP_Query 中的參數如何運作

#當您在主題或外掛程式中編寫 WP_Query 時,您需要包含四個主要元素:

  • 查詢的參數,使用本教學將介紹的參數
  • 查詢本身
  • 循環
  • 結束:關閉 if 和 while 標籤並重置發布資料

實際上,這將類似於以下內容:

<?php

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

// Custom query.
$query = new WP_Query( $args );

// Check that we have query results.
if ( $query->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 前面使用減號來排除作者:

$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 的有效示例。

以上是WP_Query參數:作者、搜尋、密碼和權限的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板