Wordpress next_post_link / previous_post_link不属于同一类别

时间:2016-03-16 11:52:42

标签: php wordpress

这是我的设置。

single.php中

<?php

    if ( in_category( 'my-category' ) ) {
        include( TEMPLATEPATH.'/single-my-category.php' );
    }
    else {
        include( TEMPLATEPATH.'/single-generic.php' );
    }
?>

单MY-category.php

<?php

if ( have_posts() ) : while (have_posts()) : the_post(); ?>

<?php echo the_title(); ?>

<div class="pagination">
    <div class="container">
        <div class="row">
            <div class="next col-xs-6 col-sm-6 col-md-6 col-lg-6">
                <?php next_post_link( '%link', '<img src="' . get_template_directory_uri() . '/img/cs-left.png" /> PREVIOUS', true ); ?>
            </div>

            <div class="previous col-xs-6 col-sm-6 col-md-6 col-lg-6">
                <?php previous_post_link( '%link', 'NEXT <img src="' . get_template_directory_uri() . '/img/cs-right.png" />', true ); ?>
            </div>
        </div>
    </div>
</div>

<?php endwhile; endif; ?>

这就是我所遵循的 - http://codex.wordpress.org/Function_Reference/next_post_link

我不太确定我在这里做错了什么因为某些原因,即使该函数的in_same_term参数设置为true,previous_post_link也会将我带到不同类别的帖子中。

有什么想法吗?

感谢。

4 个答案:

答案 0 :(得分:2)

按如下方式编辑代码块。你还没有把'.php&#39;在single.php文件的第5行。上一页/下一篇文章仅针对您在single.php的if语句中指定的类别的帖子显示(此处类别为&#39; php&#39;)。对于以下示例,我创建了一个目录&#39; template-parts&#39;并在该目录中创建了两个php文件(&#34; single-my-category.php&#34;和#34; single-generic.php&#34;)。

single.php中

<?php
    $the_query = new WP_Query( $post );

    if (in_category('php')) {
        include( 'template-parts/single-my-category.php' );
    } else {
        include( 'template-parts/single-generic.php' );
    }
?>

单MY-category.php

if ( have_posts() ) : while (have_posts() ) : the_post(); ?>

<?php the_title(); ?>

<div class="pagination">
    <div class="container">
        <div class="row">
            <div class="next col-xs-6 col-sm-6 col-md-6 col-lg-6">
                <?php next_post_link( '%link', '<img src="' . get_template_directory_uri() . '/img/cs-left.png" /> PREVIOUS', true ); ?>
            </div>

            <div class="previous col-xs-6 col-sm-6 col-md-6 col-lg-6">
                <?php previous_post_link( '%link', 'NEXT <img src="' . get_template_directory_uri() . '/img/cs-right.png" />', true ); ?>
            </div>
        </div>
    </div>
</div>

<?php endwhile; endif; ?>

答案 1 :(得分:1)

同时在单页中指定类别名称..由于single-categoryname.php不正确,您应该尝试使用taxonomy-taxonomy_name.php或

@font-face {
font-family: 'fontello';
src: url('..//font/fontello.eot?47332372');
src: url('..//font/fontello.eot?47332372#iefix') format('embedded-opentype'),
         url('..//font/fontello.woff?47332372') format('woff'),
         url('..//font/fontello.ttf?47332372') format('truetype'),
         url('..//font/fontello.svg?47332372#fontello') format('svg');
font-weight: normal;
font-style: normal;

答案 2 :(得分:-1)

您能否在模板文件中添加此代码。

add_filter('tc_previous_single_post_link_args', 'navigate_in_same_taxonomy');
add_filter('tc_next_single_post_link_args', 'navigate_in_same_taxonomy');
function navigate_in_same_taxonomy( $args ){
  $args['in_same_term'] = true;
  return $args;
}

现在在 function.php

中添加以下代码
{{1}}

如果您在Next / Prev链接上需要更多选项,请选中this link

答案 3 :(得分:-1)

如果 in_same_term 不适合您,可能是您的查询对象没有阻止发布数据。

试一试 -

global $the_query;
$the_query = new WP_Query( $post );
global $the_query;
if ( $the_query->have_posts() ) : while ($the_query->have_posts() ) : the_post(); ?>

<?php the_title(); ?>

<div class="pagination">
    <div class="container">
        <div class="row">
            <div class="next col-xs-6 col-sm-6 col-md-6 col-lg-6">
                <?php next_post_link( '%link', '<img src="' . get_template_directory_uri() . '/img/cs-left.png" /> PREVIOUS', true ); ?>
            </div>

            <div class="previous col-xs-6 col-sm-6 col-md-6 col-lg-6">
                <?php previous_post_link( '%link', 'NEXT <img src="' . get_template_directory_uri() . '/img/cs-right.png" />', true ); ?>
            </div>
        </div>
    </div>
</div>

<?php endwhile; endif; ?>