WordPress上一页和下一页仅在一个类别中 - 包含多个类别的帖子

时间:2017-06-08 19:20:52

标签: php wordpress

要点击上一篇或上一篇文章我使用此代码

<?php the_post_navigation( array (
            'next_text' => '<span class="meta-nav">' . __( 'Previous', 'neubau' ) . '</span> ' .
                '<span class="screen-reader-text">' . __( 'Previous Post', 'neubau' ) . '</span> ',
            'prev_text' => '<span class="meta-nav">' . __( 'Next', 'neubau' ) . '</span> ' .
                '<span class="screen-reader-text">' . __( 'Next Post', 'neubau' ) . '</span> ',
            'in_same_term' => 'true',
        ) ); ?>

&#39; in_same_term&#39; =&GT; &#39; true&#39; 用于打开同一个分类中的下一个或上一个帖子。但这不适用于多个类别。

我的帖子有三个类别: portfolio-1,portfolio-2,portfolio-3 。要在首页上显示其中一些帖子,我会添加第四个类别: home 。在一个类别(例如投资组合-1)中,我点击下一个或上一个帖子链接。如果下一篇或下一篇文章有​​两个类别( portfolio-1 home ),我将被重定向到 home 的下一篇文章/上一篇文章 - 而不是 portfolio-1 的下一篇/上一篇文章。

如何保持一个类别(例如 portfolio-1 )?

我发现一些网站有类似的问题,但我无法将te解决方案转移到我的代码中。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

文件&#34; link-template.php&#34;似乎是代码更改的正确文件。

function get_the_post_navigation( $args = array() ) {
    $args = wp_parse_args( $args, array(
        'prev_text'          => '%title',
        'next_text'          => '%title',
        'in_same_term'       => true,
        'excluded_terms'     => '7,37',
        'taxonomy'           => 'category',
        'screen_reader_text' => __( 'Post navigation' ),
    ) );

    $navigation = '';

    $previous = get_previous_post_link(
        '<div class="nav-previous">%link</div>',
        $args['prev_text'],
        $args['in_same_term'],
        $args['excluded_terms'],
        $args['taxonomy']
    );

    $next = get_next_post_link(
        '<div class="nav-next">%link</div>',
        $args['next_text'],
        $args['in_same_term'],
        $args['excluded_terms'],
        $args['taxonomy']
    );

    // Only add markup if there's somewhere to navigate to.
    if ( $previous || $next ) {
        $navigation = _navigation_markup( $previous . $next, 'post-navigation', $args['screen_reader_text'] );
    }

    return $navigation;
}

这似乎是重要的一段:

function get_the_post_navigation( $args = array() ) {
    $args = wp_parse_args( $args, array(
        'prev_text'          => '%title',
        'next_text'          => '%title',
        'in_same_term'       => true,
        'excluded_terms'     => '7',
        'taxonomy'           => 'category',
        'screen_reader_text' => __( 'Post navigation' ),
    ) );

我设置了in_same_term&#39;真的&#39;。 (用于测试&#34; link-template.php&#34;是否是正确的文件我删除了以前添加的代码&#39; in_same_term&#39; =&gt;&#39; true&#39;来自文件&# 34;的single.php&#34)。我添加到了#excluded; excluded_terms&#39; &#39; 7&#39;对于类别&#34; home&#34;。结果是前一个/下一个保持在一个类别内。但这个帖子有两个类别 - &#34; portfolio-1&#34;和&#34;家庭&#34; - 未显示。

下一步:如何将帖子包含在两个类别&#34; portfolio-1&#34;和&#34;家庭&#34;并排除其他类别&#34; home&#34;?

的帖子