WordPress next_post_link/ previous_post_link bleibt nicht in derselben Kategorie

Lesezeit: 6 Minuten

Benutzeravatar von Andrew Matthew
Andreas Matthäus

Hier ist mein Setup.

single.php

<?php

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

single-meine-kategorie.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; ?>

Dies ist, was ich befolgt habe – http://codex.wordpress.org/Function_Reference/next_post_link

Ich bin mir nicht ganz sicher, was ich hier falsch mache, da mich der previous_post_link aus irgendeinem Grund zu einem Beitrag in einer anderen Kategorie führt, obwohl der Parameter in_same_term der Funktion auf true gesetzt ist.

Irgendwelche Ideen?

Vielen Dank.

  • Dies geschieht, weil Sie mehrere Kategorien in Ihrem Beitrag haben und wp einfach zu dem geht, was auch immer als erstes im Beitrag steht (schätzen). Prüfen diesen Link hier. Auch diese Antwort könnte hilfreich sein.

    – dingo_d

    1. April 2016 um 11:04 Uhr


  • Der Beitrag ist nur 1 Kategorie zugeordnet

    – Andreas Matthäus

    1. April 2016 um 13:34 Uhr

  • Sie können den Paginierungslink unter der Schleife ausprobieren

    – StreetCoder

    3. April 2016 um 12:47 Uhr

  • Sind Sie sicher, dass dieser Beitrag nur 1 Kategorie zugeordnet ist? Ist es möglich, dass es immer noch Uncategorized zugeordnet ist? Es ist auch eine Kategorie und hat die niedrigste ID in der Datenbank.

    – dev_masta

    4. April 2016 um 3:28 Uhr

  • Außerdem hoffe ich, dass Sie kein Cache-Plugin verwenden.

    – dev_masta

    4. April 2016 um 3:32 Uhr

Bearbeiten Sie Ihre Codeblöcke wie folgt. Sie haben ‘.php’ nicht in die 5. Zeile Ihrer single.php-Datei eingefügt. Der vorherige/nächste Beitrag wird nur für die Beiträge der Kategorie angezeigt, die Sie darin angeben if Anweisung der single.php ( hier Kategorie ‘php’ ). Für das folgende Beispiel habe ich ein Verzeichnis „template-parts“ und zwei PHP-Dateien („single-my-category.php“ und „single-generic.php“) in diesem Verzeichnis erstellt.

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' );
    }
?>

single-meine-kategorie.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; ?>

  • Hallo, danke für die Antwort, aber das ist eigentlich ein Fehler meinerseits. Ich habe die Frage gekürzt, damit jeder leichter sehen kann, was ich getan habe, und ich habe versehentlich ‘.php’ am Ende weggelassen. Im Code hat es tatsächlich ‘.php’ am Ende des Vorlagennamens. Ich werde dies jetzt in meiner Frage bearbeiten.

    – Andreas Matthäus

    4. April 2016 um 8:48 Uhr

  • @AndrewMatthew Ich denke, Sie haben hier sehr wichtige Informationen ausgelassen. Ihr Code funktioniert einwandfrei, also bricht etwas anderes, das nicht gepostet wird, Ihren Code

    – Pieter Goosen

    4. April 2016 um 10:41 Uhr

  • next_post_link() & previous_post_link() Nehmen Sie fünf Parameter. Der vierte ist $excluded_terms und der fünfte ist $taxonomy (Standardwert ist ‘category’). Könnten Sie versuchen, beiden Funktionen zwei weitere Parameter hinzuzufügen? 4. wird ” und 5. wird ‘Kategorie’ sein. Bezug

    – Sajib Biswas

    4. April 2016 um 18:35 Uhr


Geben Sie auch den Kategorienamen in einer einzelnen Seite an. Da single-categoryname.php nicht korrekt ist, sollten Sie es mit taxonomy-taxonomy_name.php versuchen ODER

<?php query_posts('category_name=CATEGORYNAME&showposts=5');
while (have_posts()) : the_post();
  // do whatever you want
?>
<?php endwhile;?>
<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>

Wenn in_gleicher_Begriff funktioniert bei Ihnen nicht. Möglicherweise hält Ihr Abfrageobjekt die Post-Daten nicht zurück.

Versuche es –

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; ?>

Benutzeravatar von Mukesh Panchal
Mukesh Panchal

Können Sie diesen Code bitte in Ihre hinzufügen Vorlagendatei.

<ul class="pager">
  <?php if ( get_previous_post() != null ) : ?>
    <li class="previous">
      <span class="nav-previous">
        <?php 
          $singular_nav_previous_text = apply_filters( 'tc_singular_nav_previous_text', _x( '&larr;' , 'Previous post link' , 'customizr' ) );
          previous_post_link( '%link' , '<span class="meta-nav">' . $singular_nav_previous_text . '</span> %title' ); 
        ?>
      </span>
    </li>
  <?php endif; ?>
  <?php if ( get_next_post() != null ) : ?>
    <li class="next">
      <span class="nav-next">
        <?php
          $singular_nav_next_text = apply_filters( 'tc_singular_nav_next_text', _x( '&rarr;' , 'Next post link' , 'customizr' ) );
          next_post_link( '%link' , '%title <span class="meta-nav">' . $singular_nav_next_text . '</span>' ); 
          ?>
      </span>
    </li>
  <?php endif; ?>
</ul>

Fügen Sie nun den folgenden Code hinzu Funktion.php

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;
}

wenn Sie weitere Optionen für die Überprüfung des nächsten/vorherigen Links benötigen dieser Link

1389570cookie-checkWordPress next_post_link/ previous_post_link bleibt nicht in derselben Kategorie

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy