从下一个和上一个帖子链接中排除特定类别的帖子

时间:2014-07-28 作者:vyperlook

我一直在寻找这个。。。但我所得到的并不是我所需要的。我只想在单曲上显示下一个和上一个链接。php(来自所有类别,基于发布日期,不只是在同一类别中),但跳过一个类别。因此,如果下一篇(或上一篇)帖子将位于类别id 402中,请跳过该帖子并获取下一篇(或上一篇)帖子。

这个简单的代码<?php next_post_link(); ?> 工作得很好,但我只需要它跳过402类的帖子,我也不想使用帖子的标题,只想使用添加到“下一个”和“上一个”的链接作为链接锚

非常感谢。

2 个回复
SO网友:Brad Dalton

使用第四个参数$excluded\\u termshttp://codex.wordpress.org/Function_Reference/next_post_link

<?php next_post_link( $format, $next, $in_same_term = true, $excluded_terms = \'402\', $taxonomy = \'category\' ); ?>
与上一个\\u post\\u链接相同http://codex.wordpress.org/Template_Tags/previous_post_link

$previous = \'<span class="meta-nav">Previous Post</span>\';
$next = \'<span class="meta-nav">Next Post</span>\';

<?php previous_post_link( $format, $previous, $in_same_term = true, $excluded_terms = \'402\', $taxonomy = \'category\' ); ?>
或者,您可以创建一个模板标记,如whats included in Twenty 14

if ( ! function_exists( \'twentyfourteen_post_nav\' ) ) :
/**
 * Display navigation to next/previous post when applicable.
 *
 * @since Twenty Fourteen 1.0
 */
function twentyfourteen_post_nav() {
    // Don\'t print empty markup if there\'s nowhere to navigate.
    $previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, \'\', true );
    $next     = get_adjacent_post( false, \'\', false );

    if ( ! $next && ! $previous ) {
        return;
    }

    ?>
    <nav class="navigation post-navigation" role="navigation">
        <h1 class="screen-reader-text"><?php _e( \'Post navigation\', \'twentyfourteen\' ); ?></h1>
        <div class="nav-links">
            <?php
            if ( is_attachment() ) :
                previous_post_link( \'%link\', __( \'<span class="meta-nav">Published In</span>%title\', \'twentyfourteen\' ) );
            else :
                previous_post_link( \'%link\', __( \'<span class="meta-nav">Previous Post</span>\', \'twentyfourteen\' ) );
                next_post_link( \'%link\', __( \'<span class="meta-nav">Next Post</span>\', \'twentyfourteen\' ) );
            endif;
            ?>
        </div><!-- .nav-links -->
    </nav><!-- .navigation -->
    <?php
}
endif;

SO网友:Mark Kaplun

这就是自定义帖子类型的目的——分离不相关的内容类型。根据您的描述,类别402似乎不包含读者浏览网站时相关的内容,但下一个/上一个链接并不是您可能需要处理的唯一地方,您还需要破解日历小部件、最近的帖子和评论小部件、RSS提要生成,然后还需要破解各种插件。

您可能可以破解这些next/prev函数,或者编写一个自己的函数,但未来的证明方法是将代码改为使用CPT。

结束

相关推荐

Get a list of categories ids

我正在使用基于自定义帖子类型的过滤器制作一个公文包。该过滤器必须只显示公文包中显示的帖子的类别,因为用户可以在短代码中通过id指定它们-[公文包id=“1,2,3”],而我无法获得该类别id的列表。下面是一个简单的例子,说明我正在尝试做什么:来自快捷码的自定义帖子ID列表:$ids 相同ID的数组:$id_array = explode(\',\', $ids) 必须返回类别ID列表的感兴趣的变量:$cat_ids = ??? 接下来,我们只获取具有所需id的类别:$ca