到目前為止,在本系列中,您已經了解了可以與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
欄位的值作為其參數,該值在使用者管理畫面中顯示為暱稱:
請注意,由於使用者可以編輯此內容,因此使用 author
會更安全參數(如果您認為您的使用者可能會變更它)。
您也可以查詢一系列作者的貼文:
$args = array( 'author__in' => array( '1', '2' ) );
上面將查詢兩位作者的帖子: ID 為 1
和 2
的作者,給出的結果與我在 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和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

在PHP中,trait適用於需要方法復用但不適合使用繼承的情況。 1)trait允許在類中復用方法,避免多重繼承複雜性。 2)使用trait時需注意方法衝突,可通過insteadof和as關鍵字解決。 3)應避免過度使用trait,保持其單一職責,以優化性能和提高代碼可維護性。

依賴注入容器(DIC)是一種管理和提供對象依賴關係的工具,用於PHP項目中。 DIC的主要好處包括:1.解耦,使組件獨立,代碼易維護和測試;2.靈活性,易替換或修改依賴關係;3.可測試性,方便注入mock對象進行單元測試。

SplFixedArray在PHP中是一種固定大小的數組,適用於需要高性能和低內存使用量的場景。 1)它在創建時需指定大小,避免動態調整帶來的開銷。 2)基於C語言數組,直接操作內存,訪問速度快。 3)適合大規模數據處理和內存敏感環境,但需謹慎使用,因其大小固定。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

JavaScript中處理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。 1.??返回第一個非null或非undefined的操作數。 2.??=將變量賦值為右操作數的值,但前提是該變量為null或undefined。這些操作符簡化了代碼邏輯,提高了可讀性和性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。