【问题标题】:Query latest Wordpress post from a year ago查询一年前最新的 Wordpress 帖子
【发布时间】:2017-02-14 19:08:17
【问题描述】:

是否可以查询一年前的 Wordpress 帖子,或距该日期最近的帖子。

我想要一个“回顾”功能,让用户可以查看我们一年前谈论的内容。

我试过翻阅手抄本,但还没有找到任何灵感。有什么想法吗?

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    您可以使用WP_Query 运行查询,它会找到您的帖子子集。因为date_query 函数可以处理strtotime 可以识别的任何值,所以为了方便,可以使用'-1 year'。

    <?php
    $args = array( 
        'post_count' => 1,
        'date_query' => array( array( 'before' => '-1 year' ) ),    
        'posts_per_page' => 1
    );
    $lookback = new WP_Query( $args ); 
    
    while ( $lookback->have_posts() ) : ?>
    
        <div>
        <h1>One year ago you posted:</h1>
        <?php $lookback->the_post(); ?>
        </div>
    
    <?php endwhile; ?>
    

    【讨论】:

    • 谢谢 - 这对我来说并不完美,但让我得到了可以工作的代码$args = array( 'post_type' =&gt; 'podcast', 'date_query' =&gt; array( array( 'before' =&gt; '-1 year', ), ), 'posts_per_page' =&gt; 1 ); $lookback = new WP_Query( $args ); while ( $lookback-&gt;have_posts() ) : $lookback-&gt;the_post();
    • 谢谢,@KevinRobinson。如果您可以通过对我的答案进行投票并将其标记为正确来参与进来,我们将不胜感激。
    【解决方案2】:

    以下应该可以工作(未经测试):

    global $wpdb;
    $nearest_one_year_ago = $wpdb->get_var("SELECT id
    FROM $wpdb->posts
    ORDER BY ABS( DATEDIFF( post_date, ".date("Y-m-d",strtotime("-1 year", time())." ) ) 
    LIMIT 1");
    
    $post = get_post($nearest_one_year_ago);
    
    // ... go on
    

    说明:只需为您的复杂查询问题找到一个有效的 SQL 查询,然后使用 $wpdb。但是通常使用 WP_Query 更好,只要它可以完成。

    更多信息: SQL Query to show nearest date? https://www.w3schools.com/sql/func_datediff.asp https://codex.wordpress.org/Class_Reference/wpdb

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多