首頁 >CMS教程 >&#&按 >探索WordPress get_posts功能

探索WordPress get_posts功能

Lisa Kudrow
Lisa Kudrow原創
2025-02-17 10:17:43471瀏覽

探索WordPress get_posts功能

鑰匙要點

    WordPress中的get_post()函數用於通過應用自定義過濾器並根據一組參數對最終結果進行排序來檢索數據庫中的帖子。它返回一個wp_post對象的數組,每個對象代表單個帖子。
  • get_post()函數優先於WP_QUERY對象,因為後者會改變主循環,並可能引起站點問題。 get_posts()函數和get_pages()函數都檢索帖子,但參數名稱,值和檢索的方法有所不同。
  • >
  • get_posts()函數接受一系列參數以應用自定義過濾器並排序結果。這些參數包括post_per_page,page,sax_query,orderby,order,reford,meta_key,meta_value,post_type和post_status。
  • > get_post()函數可用於檢索最受歡迎的帖子,隨機帖子,具有匹配的元密鑰和值的帖子以及帶有自定義分類名稱的自定義帖子類型的帖子。然後將返回的結果循環進行進一步使用。
  • >
  • >許多WordPress插件通過自定義排序順序,基於特定的元密鑰或分類法檢索帖子,從數據庫中檢索帖子。您是否曾經想過這些插件如何在不編寫任何SQL查詢的情況下檢索自定義的帖子列表?在本教程中,我們將學習如何做到這一點。
  • >

>在本文中,我們將探索get_posts()函數,其中一些示例有關如何在自己的項目中使用它。我們還將介紹此功能的一些典型用例,以及它與wp_query對象和get_pages函數的不同。

get_posts()函數是什麼? 探索WordPress get_posts功能 自WordPress 1.2.0以來,WordPress Core已在WordPress Core中使用

get_posts函數。此功能基本上用於通過應用自定義過濾器並根據一組參數對最終結果進行排序來檢索數據庫中的帖子。

get_post()函數返回WP_POST對象的數組。每個WP_POST對象代表一個單獨的帖子。

>內部get_posts使用wp_query對像根據傳遞的參數集來構建和執行SQL查詢。

注意:帖子是指帖子,頁面和自定義帖子類型。

為什麼不直接使用wp_query對象?

>插件使用get_posts函數,而不是wp_query對象,因為使用wp_query對象直接改變了主循環(即全局$ wp_query變量),這會導致站點問題。

get_posts()和get_pages()函數之間有什麼區別?

>它們兩個都用於從WordPress數據庫中檢索帖子,但是,以下是它們之間的一些區別:>
    它們之間的幾個參數名稱和值之間有所不同。儘管無論參數的名稱如何
  • get_pages()函數當前不基於meta_key和meta_value參數檢索帖子。
  • get_pages()函數不使用wp_query對象。相反,它直接構建和執行SQL查詢。
  • get_posts()函數參數

get_post函數僅將一個參數作為數組。陣列包含用於應用自定義過濾器的不同參數並對結果進行排序。 >

這是一個代碼示例,該示例顯示瞭如何調用此函數和可用的各種參數:>

有更多參數可用,但是這些參數是最常用的參數。讓我們看一下這些參數:

<span><span><?php 
</span></span><span>
</span><span><span>$args = array(
</span></span><span>	<span>"posts_per_page"   => 5,
</span></span><span>	<span>"paged"            => 1
</span></span><span>	<span>"tax_query" => array(
</span></span><span>		<span>array(
</span></span><span>			<span>"taxonomy" => "category",
</span></span><span>			<span>"field"    => "slug",
</span></span><span>			<span>"terms"    => "videos,movies",
</span></span><span>		<span>)
</span></span><span>	<span>),
</span></span><span>	<span>"orderby"          => "post_date",
</span></span><span>	<span>"order"            => "DESC",
</span></span><span>	<span>"exclude"          => "1123, 4456",
</span></span><span>	<span>"meta_key"         => "",
</span></span><span>	<span>"meta_value"       => "",
</span></span><span>	<span>"post_type"        => "post",
</span></span><span>	<span>"post_status"      => "publish"
</span></span><span><span>);
</span></span><span>
</span><span><span>$posts_array = get_posts($args); 
</span></span><span>
</span><span><span>?></span></span>
posts_per_page:此參數定義要返回的帖子數量。如果您想要所有帖子,請使用-1。

> page:允許我們在使用posts_per_page參數時在一組帖子之間導航。它用於分頁。例如:假設posts_per_page是10,結果中有20個帖子,然後如果您分配了第2個,則返回最後10個帖子。
    > Orderby:用於對檢索到的帖子進行排序。一些可能的值是:“無”,“ date”,“ rand”,“ comment_count”,“ meta_value”,“ meta_value_num”等,同時使用“ meta_value”和“ meta_value_num”進行排序時,您需要提供Meta_key參數。
  1. 順序:指定訂單參數的上升或降序。可能的值是“ desc”或“ asc”。
  2. >
  3. 排除:它獲取逗號分隔的帖子ID列表,該列表將在數據庫搜索中排除。
  4. > meta_key和meta_value:如果您僅提供元數據,則將返回具有密鑰的帖子。如果您還提供meta_value,則返回了與meta_key的meta_value匹配的帖子。
  5. >
  6. post_type:根據帖子,頁面或自定義帖子類型檢索內容。請記住,默認的post_type僅設置為顯示帖子,而不設置為頁面。
  7. >
  8. > POST_STATUS:根據帖子狀態檢索帖子。可能的價值是:“發布”,“待處理”,“草稿”,“未來”,“任何”或“垃圾”。
  9. >
  10. > wp_post對象
  11. get_post函數返回包含WP_POST對象的數組。這是WP_POST對象的重要屬性:
    1. ID:帖子的ID
    2. >
    3. > post_author:帖子的作者名稱
    4. post_type:post
    5. 的類型
    6. post_title:帖子的標題
    7. >
    8. > post_date:發布的日期。格式:0000-00-00 00:00:00
    9. post_content:帖子的內容。
    10. post_status:職位的狀態
    11. >
    12. comment_count:帖子的註釋數

    get_posts

    的示例

    >讓我們使用get_posts函數查看一些示例。

    >

    最受歡迎的帖子

    >如果要在網站上顯示最討論的帖子的頂部N號,則可以使用get_posts檢索它們。這是一個示例:

    <span><span><?php 
    </span></span><span>
    </span><span><span>$args = array(
    </span></span><span>	<span>"posts_per_page"   => 5,
    </span></span><span>	<span>"paged"            => 1
    </span></span><span>	<span>"tax_query" => array(
    </span></span><span>		<span>array(
    </span></span><span>			<span>"taxonomy" => "category",
    </span></span><span>			<span>"field"    => "slug",
    </span></span><span>			<span>"terms"    => "videos,movies",
    </span></span><span>		<span>)
    </span></span><span>	<span>),
    </span></span><span>	<span>"orderby"          => "post_date",
    </span></span><span>	<span>"order"            => "DESC",
    </span></span><span>	<span>"exclude"          => "1123, 4456",
    </span></span><span>	<span>"meta_key"         => "",
    </span></span><span>	<span>"meta_value"       => "",
    </span></span><span>	<span>"post_type"        => "post",
    </span></span><span>	<span>"post_status"      => "publish"
    </span></span><span><span>);
    </span></span><span>
    </span><span><span>$posts_array = get_posts($args); 
    </span></span><span>
    </span><span><span>?></span></span>

    >在這裡,我們使用訂單參數根據註釋數量對帖子進行排序,並檢索前10個帖子。

    隨機帖子

    >您也可以輕鬆檢索隨機帖子。一旦閱讀了當前的文章,就可以在您的網站上推薦另一篇文章。這是為此的代碼:

    <span><span><?php
    </span></span><span>	<span>$args = array("posts_per_page" => 10, "orderby" => "comment_count");
    </span></span><span>	<span>$posts_array = get_posts($args);
    </span></span><span>	<span>foreach($posts_array as $post)
    </span></span><span>	<span>{
    </span></span><span>	  <span>echo "<h1>" . $post->post_title . "</h1><br>";
    </span></span><span>	  <span>echo "<p>" . $post->post_content . "</p><br>";
    </span></span><span>	<span>} 
    </span></span><span><span>?></span></span>
    在上面的示例中,我們將值rand傳遞給了order_by參數。

    >

    >具有匹配的元密鑰和值

    >的帖子

    >我們可能想檢索所有具有特定元密鑰的帖子和分配的值。例如:有些博客都有每篇文章的審稿人。我們可能想檢索特定審稿人審查的文章。

    這是做到這一點的代碼:

    >

    <span><span><?php
    </span></span><span>  <span>$args = array("posts_per_page" => 1, "orderby" => "rand");
    </span></span><span>  <span>$posts_array = get_posts($args);
    </span></span><span>  <span>foreach($posts_array as $post)
    </span></span><span>  <span>{
    </span></span><span>    <span>echo "<h1>" . $post->post_title . "</h1><br>";
    </span></span><span>    <span>echo "<p>" . $post->post_content . "</p><br>";
    </span></span><span>  <span>} 
    </span></span><span><span>?></span></span>
    >在這裡,我們正在檢索“ NarayanPrusty”審查的所有帖子。我們假設審閱者名稱是通過每個帖子的元密鑰“審稿人”存儲的。

    >

    >自定義帖子類型帶有自定義分類法

    >我們可能想檢索帶有自定義分類名稱的自定義帖子類型的帖子。考慮此代碼示例:

    <span><span><?php
    </span></span><span>  <span>$args = array("posts_per_page" => -1, "meta_key" => "reviewer", "meta_value" = "narayanprusty");
    </span></span><span>  <span>$posts_array = get_posts($args);
    </span></span><span>  <span>foreach($posts_array as $post)
    </span></span><span>  <span>{
    </span></span><span>    <span>echo "<h1>" . $post->post_title . "</h1><br>";
    </span></span><span>    <span>echo "<p>" . $post->post_content . "</p><br>";
    </span></span><span>  <span>} 
    </span></span><span><span>?></span></span>
    在此示例中,我們正在檢索屬於“插件”和“主題”自定義分類法的定制帖子類型的帖子。

    結論

    >在本文中,我們看到了get_posts函數如何工作,它支持的各種參數,循環循環返回結果以及一些示例用例。 GET_POSTS功能是最常用的WordPress函數之一,希望您現在可以開始使用自己的項目。

    >

    >關於WordPress GET_POSTS函數的常見問題(FAQ)

    > wordpress中的get_posts和wp_query之間有什麼區別?

    get_posts和wp_query均用於從WordPress數據庫中檢索帖子。但是,它們的使用和靈活性有所不同。 get_posts是一個更簡單的功能,非常適合初學者,也是您只需要檢索特定帖子的情況。另一方面,WP_QUERY更強大和靈活。它允許更複雜的查詢,並使您對WordPress循環有更多控制權。雖然get_posts更易於使用,但WP_QUERY提供了更高級的功能來自定義查詢。

    >如何修改get_posts返回的帖子數?默認情況下,將其設置為5。如果要檢索所有帖子,則可以將“ numberPosts”設置為-1。例如,要獲取10篇文章,您將使用:get_posts(array('numberposts'=> 10));

    >我可以使用get_posts檢索自定義帖子類型嗎?可以使用get_post檢索自定義郵政類型。您只需要在查詢中指定“ post_type”參數。例如,如果您具有稱為“產品”的自定義帖子類型,則可以使用以下方式檢索以下帖子(array('post_type'=>'products'));

    >我如何對返回的帖子進行分組通過get_posts?

    >您可以通過使用'orderby'和'order'參數對get_post返回的帖子進行分類。 “ Orderby”確​​定要通過排序的字段,“順序”確定排序順序(ASC的上升和下降的降序)。例如,要按升序按標題對帖子進行排序,您將使用:get_posts(array('orderbod'=>'title','order'=>'asc'));

    要從特定類別檢索帖子?

    是的,您可以使用get_post從特定類別檢索帖子。您只需要在查詢中指定“類別”參數。例如,要從ID 3獲得類別的帖子,您將使用:get_post(array('category'=> 3));

    如何使用get_post從多個類別中檢索帖子? >

    >要從多個類別檢索帖子,您可以將類別ID數組傳遞到“類別”參數。例如,要獲取具有IDS 3和4的類別的帖子,您將使用:get_posts(array('category'=> array(3,4)));

    >我可以使用get_posts檢索特定作者的帖子?

    是的,您可以使用get_posts檢索特定作者的帖子。您只需要在查詢中指定“作者”參數。例如,要使用ID 1獲取作者的帖子,您將使用:get_posts(array('rution'=> 1));

    >我如何檢索使用get_posts包含特定元值的帖子?

    要檢索包含特定元值的帖子,您可以使用'meta_key'和'meta_value'參數。例如,要獲取具有“顏色”元密鑰和“藍色”的元值的帖子,您將使用:get_posts(array('meta_key'=>'color','meta_value'=>'blue') );

    我可以使用get_posts檢索具有特定標籤的帖子嗎?您只需要在查詢中指定“標籤”參數。例如,要獲取具有標籤“ wordpress”的帖子,您將使用:get_posts(array('tag'=>'wordpress’));

    >如何使用get_posts從特定日期範圍內檢索帖子?

    >

    從特定日期範圍內檢索帖子,您可以使用'date_query'參數。此參數接受數組數組,每個內部數組都定義一個日期查詢子句。例如,要從2020年1月開始獲取帖子,您將使用:get_posts(array('date_query'=> array(array(array'=> 2020,'noter''=> 1)))));>>>>>

以上是探索WordPress get_posts功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn