首页 >CMS教程 >WordPress >探索WordPress get_posts功能

探索WordPress get_posts功能

Lisa Kudrow
Lisa Kudrow原创
2025-02-17 10:17:43464浏览

探索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