发布时间线(使用日期而不是数字进行分页)

时间:2012-04-29 作者:Amal

我很迷路。。。我希望有人能把我带到正确的轨道上!

我正在尝试实现帖子时间线的效果,通过分页帖子(每页1个),而不是按编号显示页面(即1、2、3等),我希望将链接显示为每篇帖子的日期,如下所示:

最新(<)<;|3 Mar | 15 Feb | 22 Jan | 17 Dec | >> 最老的

到目前为止,我已经研究了内置的Wordpress函数“get\\u pagination”和“paginate\\u links”,但我真的很挣扎!

任何帮助都将不胜感激。非常感谢。

2 个回复
SO网友:Adam

看起来你在别处问过这个问题,

  • PROBLEM: WordPress Support Forum
  • SOLUTION: PasteBin
  • AUTHOR: Alan Jackson

    <?php
    echo \'<ul id="timeline">\';
    echo \'<li>Latest</li>\';
    $prev_month = \'\';
    $prev_year = \'\';
    $args = array(
             \'posts_per_page\' => 10,
             \'ignore_sticky_posts\' => 1
    );
    $postsbymonth = new WP_Query($args);
    while($postsbymonth->have_posts()) {
        $postsbymonth->the_post();
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_time(\'j\'); ?></a></li>
    <?php
        if(get_the_time(\'F\') != $prev_month || get_the_time(\'Y\') != $prev_year && get_the_time(\'Y\') == $prev_limit_year) {
            echo "<li>< ".get_the_time(\'M\')."</li>\\n";
        }
        $prev_month = get_the_time(\'F\');
        $prev_year = get_the_time(\'Y\');
    
    }
    echo \'</ul>\';
    ?>
    
    我并不声称这是有效的,但我会假设原作者在提供答案之前测试了这一点,如果他的个人网站可以参考的话。

SO网友:Amal

我想我已经通过使用get_posts 在内部this pagination function 作者:Kriesi。

代码的主要核心在functions.php 我正在调用single 模板如下:kriesi_pagination($additional_loop->max_num_pages);

function kriesi_pagination($pages = \'\', $range = 3) {
       global $post;  
           $showitems = ($range * 2)+1;  
           global $paged;
           if(empty($paged)) $paged = 1;
            if($pages == \'\') {
                   global $wp_query;
                   $pages = $wp_query->max_num_pages;
                        if(!$pages) {
                      $pages = 1;
                        }
            }
        if(1 != $pages) {
            echo "<div class=\'pagination\'><ul id=\'post-timeline\'>";
            if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href=\'".get_pagenum_link(1)."\'>&laquo;</a>";
            if($paged > 1 && $showitems < $pages) echo "<a href=\'".get_pagenum_link($paged - 1)."\'>&lsaquo;</a>";
    $args = array( \'numberposts\' => $pages, \'post_status\'=> \'publish\' );
    $myposts = get_posts( $args );
            for ($i=1; $i <= $pages; $i++) {
           $p = $i-1;
           $entryDay = date(\'j\', strtotime($myposts[$p]->post_date));
           $entryMon = date(\'M\', strtotime($myposts[$p]->post_date));
           //$newID = $myposts[$p]->post_date(\'j,M\');
                   if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) {

                    echo ($paged == $i)? "<li class=\'current\'><span class=\'day\'>".$entryDay."</span><br/><span class=\'small\'>".$entryMon."</span></li>":"<li class=\'timeline\'><a href=\'".get_pagenum_link($i)."\' class=\'inactive\' ><span class=\'day\'>".$entryDay."</span><br/><span class=\'small\'>".$entryMon."</span></a></li>"; 
                   }
            }
           if ($paged < $pages && $showitems < $pages) echo "<a href=\'".get_pagenum_link($paged + 1)."\'>&rsaquo;</a>";  
           if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href=\'".get_pagenum_link($pages)."\'>&raquo;</a>";
           echo "</ul></div>\\n";
           }
    }
如果有人对此代码有任何反馈,是否可以使用get_posts 沿着for 以这种方式循环,或者如果有更好的方法,请让我知道!

谢谢

结束