gpt4 book ai didi

php - 如何在自定义 Wordpress 循环中隐藏过去的帖子并显示 X 数量的即将发布的帖子?

转载 作者:可可西里 更新时间:2023-10-31 23:31:19 25 4
gpt4 key购买 nike

我正在尝试在 Wordpress 中显示日期等于或大于今天的帖子列表 - 目的是列出即将发生的事件。

这是我现在拥有的代码:

// Get the current date
$current_date = date('M d, Y');
$current_date = strtotime( $current_date );

// Get the event date
$post_date = get_the_time('M d, Y');
$post_date = strtotime( $post_date );

query_posts(array('category_name' => 'events',
'meta_query' => array(
array(
'key' => $post_date,
'value'=> $current_date,
'compare'=>'>='
)
),
'showposts' => 4,
'orderby' => 'date',
'order' => ASC));

while (have_posts()) : the_post();

如您所见,我正在抓取当前日期和帖子的日期。我知道这段代码有效,因为它主要以下列格式运行:

// Get the current date
$current_date = date('M d, Y');
$current_date = strtotime( $current_date );

query_posts(array('category_name' => 'events',
'showposts' => 4,
'orderby' => 'date',
'order' => ASC));

while (have_posts()) : the_post();

// Get the date
$post_date = get_the_time('M d, Y');
$post_date = strtotime( $post_date );

// If older than current date, don't show it
if( $post_date >= $current_date ):

但问题在于它会找到帖子,然后将它们与当前日期进行比较。因此,如果我想显示我的 10 个帖子中的 4 个,但有 3 个因为它们是过去的而被隐藏,我实际上只在这里显示 1 个帖子。

我需要与当前日期进行比较,然后显示该计算结果中的 4 个帖子。

非常感谢任何帮助。谢谢!

最佳答案

为此,您可以使用 date_query 作为 query_posts() 调用的一部分(代替 meta_query)。

这将消除在运行查询后检查帖子日期的需要,因此您应该始终获得您正在寻找的四个。

$today = getdate();
$args = array(
'date_query' => array(
array(
'year' => $today["year"],
'month' => $today["mon"],
'day' => $today["mday"],
'compare' => '>=',
),
),
'posts_per_page' => 4,
'orderby' => 'date',
'order' => ASC
);
query_posts($args);

注意:我强烈建议查看 WP_Query codex了解更多信息,因为其中有一些非常有用的参数。这些可以帮助您进一步优化返回的 Posts,包括 post_typepost_statuscat .当然,并非所有这些在所有情况下都与您相关(或可能根本不相关),但仍然值得一读。

警告:请注意,posts_per_page 已在一段时间前替换了 show_posts

更新

您在评论中提到上述代码可以正常工作,但只有一个 Post 被检索。我最初的想法是,这是由以下两种情况之一引起的 -

  1. 您只有一个 future 的帖子,因此没有更多要显示的内容。
  2. 某些东西正在 Hook 您的查询并更改 LIMIT 部分。

我建议尽快查看传递给 MySQL 的查询。为此,请将以下行直接添加到 query_posts($args) 下方并重新加载您的页面。 -

global $wpdb;
echo '<pre>'; print_r($wpdb->last_query); echo '<pre>';

关于php - 如何在自定义 Wordpress 循环中隐藏过去的帖子并显示 X 数量的即将发布的帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21277685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com