使用 WP_Query 在 WordPress 中執行查詢
已發表: 2023-02-12為您的 WordPress 網站提供數據的數據庫充滿了有價值的信息。 這就是可以通過許多不同變量過濾您的帖子和頁面的原因。 但是,如果您要顯示的內容不是主題的一部分,則還有其他使用該數據的方法。
這就是 WP_Query 的用武之地。這是一個使用各種參數的 PHP 類。 因此,它使您能夠從 WordPress 數據庫中提取數據以供使用或顯示在您的網站上。
在本文中,我們將更深入地了解 WP_Query 類及其使用方法。 我們還將引導您完成使用它時要遵循的一些重要步驟。 如果你準備好了,讓我們開始吧!
什麼是 WP_Query?
正如我們提到的,WP_Query 是 WordPress 數據庫使用的 PHP 類。 這個特定的類可以做幾件事,但主要用於從數據庫中提取帖子。
顧名思義,它會根據您為其設置的條件進行查詢。 由於在 WordPress 中有很多參數可以與 WP_Query 一起使用,因此您可以以多種獨特的方式提取和顯示帖子。 我們將在本文後面更詳細地探討這些選項。
如何使用 WP_Query
即使您只是學習 WordPress 代碼庫的各個方面,WP_Query 也是一個很好的入門課程。 現在,讓我們分解四種在您的網站上使用它的不同方式。
1. 從自定義循環開始
了解 WP_Query 調用的最佳方法之一是通過 WordPress 循環。 如果您不熟悉 Loop 是什麼,這是一個需要繼續閱讀的重要概念。
Loop 調用數據庫請求發佈內容,並顯示返回的數據。 它還根據設置的參數運行,例如您希望站點在單個頁面上顯示多少帖子(您可以在“設置”>“閱讀”菜單中配置)。
Loop 的基本原理如下所示:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>
這個簡單的語句本質上是說如果有帖子,就應該顯示它們。 當然,您可以在此基礎上添加各種各樣的模板標籤,以創建您想要的顯示。
您還可以將 WP_Query 插入到循環中。 這使您能夠將參數放置在將返回的帖子上。 讓我們分解一下它的樣子:
<?php
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
您會看到與基本循環相同的if/while語句,但還有一個額外的 WP_Query 字符串。 此處設置的任何參數都將決定將顯示哪些帖子。
例如,如果您想從帖子列表中排除某個作者,您可以在循環中使用 WP_Query 執行此操作:
$query = new WP_Query( array( 'author' => -12 ) );
通過將其放置在循環中,您顯示的帖子將不再包含作者編號為“12”的用戶。
您可以使用此方法的參數數量幾乎是無窮無盡的。 您可以包括類別信息以及高級分類法,僅舉兩個示例。
2. 參數:WordPress 中自定義查詢的主幹
在前面的示例中,您可能已經註意到“($args)”作為字符串的一部分。 這是引用包含的“參數”的查詢的重要部分。 它準確地告訴數據庫要在返回的數據中包含什麼。
本質上,可以設置這些參數以確定您要顯示的確切結果。 參數也可用於更改變量的值。 例如,如果您想更改類別列表在頁面上的顯示方式,您可以使用參數。
您的論點將定義一組變量和值。 因此,如果您願意,可以使用一個參數來定義一個數組,並告訴您的數據庫以降序顯示類別。 此外,您可以使用相同的方法排除任何不包含帖子的類別。
3. WP_Query 中的參數:類別、標籤等
到目前為止,我們只是順便提到了參數。 在這一點上,讓我們仔細看看他們實際上能做什麼。 它們的主要功能是使您能夠提取定制設計的帖子集合。
可以在站點標頭中使用的參數示例之一是類別參數。 您可以使用它來指定特定的顯示類別。 這是通過提供相關的類別編號或 slug 來完成的。
此外,您可以使用 Tag 參數執行相同的操作。 當然,Category 和 Tag 參數實際上只是使用 WP_Query 時的冰山一角。
4. 用方法和屬性修改對象
雖然不建議直接更改 WP_Query 等類的屬性,但您可以使用方法與它們進行交互。 本質上,方法就像函數,而屬性相當於變量。
WP_Query 有很多屬性。 這些範圍從簡單的“$posts”屬性到更複雜的屬性。 無論使用何種方法與它們交互,數據都將根據您選擇放置的參數返回。
WP_Query 與 WordPress 中的 query_posts()
值得注意的是,還有另一種方法可以修改頁面上的主查詢。 這是 query_posts() 函數。 雖然這可以以類似於 WP_Query 的方式工作,但它也可能存在很大問題。
WordPress 代碼參考甚至強烈建議您不要在網站的主循環中使用此功能。 最好在插件和主題中避免使用它。 這是因為它將完全覆蓋您的主要查詢。
WP_Query 類是首選,因為您還可以在運行查詢後“重置”主循環。 由於 WP_Query 允許您在循環中運行多個查詢,因此您還需要了解如何實現 wp_reset_postdata 函數。
如果您在主 WordPress 循環中嵌入了一個輔助循環,則重置函數將放在末尾,如下所示:
<?php wp_reset_postdata(); ?>
這將恢復默認模板標籤,您將回到啟動輔助循環之前的狀態。
使用 WP Engine 自定義您的 WordPress 網站
能夠調整項目在您網站上的顯示方式只是使用 WordPress 的好處之一。 了解 WP_Query 並利用開發人員資源頁面上提供的工具可以幫助您構建真正定制的網站。
在 WP Engine,我們熱衷於確保您擁有構建引人入勝的網站所需的資源。 立即查看我們的 WordPress 解決方案和託管計劃!