WordPress 获取文章序号

不知道怎么写标题,反正功能就是就是页面上显示这是今年的第几篇文章。原理也比较简单,逆序获取今年所有文章,再获取当前文章下标即可。因为序号是不变的,所以获取后存在postmeta中,可以减少资源消耗。另外提前对比文章时间,如果文章不是今年发布的直接返回。

下面的代码加到functions.php

function fa_get_postIndex_this_year( $postid = null ){
    global $post;
    $postid = $postid ? $postid : get_the_ID();
    if ( get_the_date('Y') != date('Y') ) return;

    $query_args = array(
        "posts_per_page" => -1,
        'order' => 'ASC',
        'date_query' => array(
            'year' => date('Y'),
        )
    );
    $i = 0;
    $the_query = new WP_Query($query_args);
    while ($the_query->have_posts()) {
        $the_query->the_post();
        $i++;
        if ( $postid == get_the_ID() ) return $i;
    }
    wp_reset_postdata();

}


function fa_get_postIndex_bymeta( $postid = null ){
    global $post;
    $postid = $postid ? $postid : get_the_ID();
    if ( get_the_date('Y') != date('Y') ) return;
    if ( get_post_meta($postid,'_index_this_year',true) ) return get_post_meta($postid,'_index_this_year',true);
    $index = fa_get_postIndex_this_year( $postid );
    add_post_meta($postid,'_index_this_year',$index);
    return $index;
}

在循环内使用<?php echo fa_get_postIndex_bymeta();?>即可。

如果是所有文章的序号则去掉date_query即可。

以上。

Comments : 15

  1. 貌似文章本来就有序号,直接输出就可以了

    1. @haguo 你是只看标题,还是说对WordPress 有着及其深入的研究?

    2. @bigfa 不知我是不是理解错了,不过我知道在循环中$wp_query->current_post这样也输出计数不过是从零开始计数。$wp_query->current_post+1这样就从1开始计数了。也可以统计到第几篇文章。

    3. @haguo 你是对的,但是current_post是当前loop中的序号,所以并没有什么卵用。

  2. 这个功能可以运用到什么地方呢?没有想到啊~

    1. @adomit 可以用来抽奖 :???:

  3. $postid = $postid ? $postid : get_the_ID();
    可以在PHP7里改成
    $postid = $postid ?? get_the_ID();

  4. 才在betty那里看到她说需要这个功能,你就出了!这绝对是真爱啊!!

    1. @柚子 没错,哈哈。

  5. 最后一句没明白什么意思。

  6. 一直好奇大发为何给返回顶部的小家伙搞没了。 :???:

    1. @旧梦 你可以反馈一下 然而现实很多人都是鼠标手势了吧

  7. 这个功能看起来不错

  8. :arrow: 评论点回复,然后不点取消回复的情况下点击评论分页,就会GG了。

  9. 哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊哇啊!!

    板烧哥棒棒哒~ :wink: :wink: :wink:
    感觉自己被实力撩了下 :!: :!:

发表留言

人生在世,错别字在所难免,无需纠正。

Smilies powered by wp-alu

Post Comment