NEXT_POST_LINK()中的EXCLUDE_CATEGORIES参数行为异常

时间:2012-02-10 作者:Pekka

我有一个Wordpress模板。php页面。该页面有“下一页”和“上一页”箭头,允许浏览所有帖子。我想将某些类别的帖子排除在“下一个”和“上一个”计算中。我有以下代码:

 // in single.php
 next_post_link( \'%link\', \'← Previous\', false, \'11 and 13 and 15\'); 
这应该会显示到下一篇文章的链接。第11、13和15类的职位不应按照the $ignore_categories parameter.

这适用于具有only 所列类别之一,例如。15. 但是发布了additionally 具有非排除类别(如1623), 做not 被排除在外,它们将显示为下一个帖子链接。

这是预期的行为吗?这对我来说似乎没有意义。

除了重建整个功能之外,我是否可以做些什么来更改它,以便在帖子有一个被排除的类别时将其排除?

1 个回复
SO网友:KleverKrypto

这很有道理,但有点倒退。我认为,执行从类别中“排除”帖子的查询最初是获取所有类别(这可能返回类别ID 1、2、5、7、11、13、15、16和23),然后检查“exclude\\u category”参数(“11和13和15”),并运行查询以获取属于类别1、2、5、7、16和23的所有帖子(跳过11、13和23)。因此,从技术上讲,返回的结果确实是正确的。

因此,您可以编写一个类似于我在下面粘贴的函数:

function prev_next_dont_include( $ids ) {
foreach ( get_categories() as $category ) : // loop thru all WP cats
    if ( !in_array( $category->cat_ID, $ids ) ) : // check if cat id is in $ids
        $categories[] = $category->cat_ID; // build list of real excluded ids
    endif;
endforeach; 
return implode( \' and \', $categories ); // "1 and 2 and 5 and 7 and 16 and 23"
}
现在可以这样使用:

previous_post_link(\'%link\',  __( \'<span class="meta-nav">&larr;</span> Previous Article\', \'twentyeleven\' ), false, prev_next_dont_include( array( 11, 12, 15 ) ) );
希望这能帮助一些人,因为它确实救了我。

结束

相关推荐