在WordPress导航中每月将问题编号增加1

时间:2014-01-13 07:59:35

标签: php wordpress

我在WordPress中有一个导航,它设置为显示默认的月度档案,这种情况下每个月等于一个问题 - 就像杂志一样。

目前,我正在使用wp_get_archives()将月份标题作为导航中的列表项回显,效果正常。

我想要做的是将一个问题编号(每月递增1)添加到列表项中的月份名称。

目前我尝试在我的主题函数文件中创建一个函数:

function is_new_month() {
    global $currentmonth, $previousmonth;
    if ( $currentmonth != $previousmonth )
        return 1;
    else
        return 0;
}

我只是根据WP核心is_new_day功能进行此操作,但我不相信这会有效。

然后在我的标题中我添加了:

<?php

$startissue = 1;

if (is_new_month()): 
    $startissue++;
endif; ?>

<ul>
    <li>Issues
        <ul>
            <?php wp_get_archives('before=Issue ' . $startissue . ' :') ?>
        </ul>
    </li>
</ul>

所以我的最终结果应该显示(示例显示最后4个问题/月):

第4期:2014年1月
第3期:2013年12月
第2期:2013年11月
第1期:2013年10月

每个都会链接到每月的帖子存档。

我认为我的自定义功能存在根本缺陷。有更好的方法吗?


这是一种享受,迪玛,谢谢你。除了它向后显示结果,即:

问题1:2014年1月
问题2:2013年12月
第3期:2013年11月
第4期:2013年10月

而不是:

第4期:2014年1月
第3期:2013年12月
第2期:2013年11月
第1期:2013年10月

所以我在order参数中加入了这里:

$archives = wp_get_archives(array('echo'=>false, 'before'=>'Issue %num%: ', 'order'=>'ASC'));

哪个有效,但仍然不是100%:

问题1:2014年10月
第2期:2013年11月
第3期:2013年12月
第4期:2013年1月

非常接近,谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个(把它放在ul标签内):

$issue_offset = 1;
$archives = wp_get_archives(array('echo'=>false, 'before'=>'Issue %num%: '));
$archives = explode( '</li>' , $archives );
$links = array();
foreach( $archives as $link ) {
    $link = str_replace( array( '<li>' , "\n" , "\t" , "\s" ), '' , $link );
    $link = str_replace('%num%', $issue_offset, $link);
    if( '' != $link ){
        $links[] = $link;
        $issue_offset++;
    }
    else {
        continue;
    }
}
foreach($links as $archive){
    echo "<li>$archive</li>";
}