web-dev-qa-db-fra.com

Lien précédent et suivant ne fonctionne pas

Dans single.php, j'ai essayé d'ajouter à l'intérieur de la boucle les previous_post_link et next_post_link. Mais rien n'est rendu quand on voit la source du site. J'ai ajouté le previous_post_link à l'intérieur d'une balise h4 pour mieux le voir. Normalement, je l'ajouterai dans pagination-bottom. Pourquoi cela arrive-t-il?

Voici mon code

    <?php if (have_posts()) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <div class="single-post-wrap col-8 Push-2">
            <div class="single-post-feat-img">
                <figure>
                    <?php the_post_thumbnail('news-thumb-single-post') ?>
                </figure>
            </div>
            <article>
                <h4><?php echo get_the_title(); ?></h4>
                <h6><?php echo get_the_date(); ?></h6>
                <hr>
                <p><?php the_content(); ?></p>
                <h4><?php previous_post_link('%link', 'Pre Post', TRUE); ?></h4>
                <hr>
            </article>
            <div class="pagination-bottom">
                <div class="pre-post">
                <a href=""><i class="fa fa-angle-left"></i>Προηγούμενο</a>
                </div>
                <div class="next-post"><a href="">Επόμενο<i class="fa fa-angle-right"></i></a>
                </div>
            </div>
        </div>   
    <?php endwhile; ?>
<?php endif; ?>
1
hambos22

EDIT

En vous référant à l'une de vos questions précédentes j'ai répondu, vous utilisez des taxonomies personnalisées, c'est donc probablement votre problème. Vous devez ensuite définir le paramètre taxonomy en conséquence. Voir ma réponse originale

REPONSE ORIGINALE

Il y a quelques points à vérifier ici

  • Où est votre next_post_link . Avez-vous quitté par défaut?

  • Utilisez-vous des catégories par défaut ou des taxonomies personnalisées? Lorsque le paramètre $in_same_term est défini sur true, le paramètre taxonomy est par défaut défini sur category. Si vous utilisez des taxonomies personnalisées, vous devrez définir le paramètre taxonomy sur votre taxonomie personnalisée.

Si tout cela se vérifie, essayez d'utiliser la navigation du thème vingt-quatorze et voyez ce qui se passe.

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>%title', 'twentyfourteen' ) );
                next_post_link( '%link', __( '<span class="meta-nav">Next Post</span>%title', 'twentyfourteen' ) );
            endif;
            ?>
        </div><!-- .nav-links -->
    </nav><!-- .navigation -->
    <?php
}

Appelez-le simplement avec twentyfourteen_post_nav() dans votre single.php

EDIT 2

J'ai un peu modifié votre code. Voici les changements

  • N'utilisez pas echo get_the_title() et echo get_the_date(). Vous pouvez simplement utiliser les fonctions retournées the_title() et the_date

  • J'ai supprimé <h4><?php previous_post_link('<p id="next-link">%link</p>', 'Next Post', TRUE); ?></h4> de l'intérieur de votre tag <article>

  • J'ai tout supprimé de <div class="pagination-bottom"></div> et je l'ai remplacé par la fonction de navigation vingt-quatre.

Comme testé, cela fonctionne parfaitement de mon côté. Vous devez maintenant modifier la fonction de pagination que j'ai ajoutée dans monORIGINAL REPONSEpour répondre à vos besoins. Voici votre single.php modifié comme je l'ai testé et cela fonctionne. J'espère que cela fonctionne pour vous aussi

<?php get_header(); ?>
<div class="wrapper">
    <section class="container-12">
    <?php if (have_posts()) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <div class="single-post-wrap col-8 Push-2">
            <div class="single-post-feat-img">
                <figure>
                    <?php the_post_thumbnail('news-thumb-single-post') ?>
                </figure>
            </div>
            <article>
                <h4><?php the_title(); ?></h4>
                <h6><?php the_date(); ?></h6>
                <hr>
                <p><?php the_content(); ?></p>

                <hr>
            </article>
            <div class="pagination-bottom">
              <?php twentyfourteen_post_nav(); ?>
            </div>
        </div>

    <?php endwhile; ?>
<?php endif; ?>
    </section>
    <div class="clear"></div>
    <div class="Push"></div>
</div>
<?php get_footer(); ?>

EDIT3

Il semble que votre code n'ait rien à voir avec votre problème, il semble que Wordpress ne reçoive pas le message suivant ou précédent, c'est pourquoi vos liens ne s'affichent pas. Étapes pour déboguer votre problème. Après chaque étape, vérifiez si votre problème existe toujours

  • Définissez debug sur true et recherchez les erreurs éventuelles. Lisez également Debugging Wordpress

  • Effacez le cache de votre navigateur en appuyant sur Ctrl et F5 . En outre, si des plug-ins de cache sont installés, effacez également leurs caches.

  • Désactivez tous vos plugins un par un. Après la désactivation d'un plugin spécifique, actualisez votre site et vérifiez si votre problème existe toujours.

  • Si cela échoue, passez à l'un des thèmes fournis comme vingt-quatorze. Testez à nouveau votre site

  • Si votre problème persiste, vos fichiers principaux Wordpress sont peut-être corrompus. Si vous le soupçonnez, sauvegardez l'intégralité de votre base de données et réinstallez wordpress. Wordpress 3.9.2 vient de paraître, alors prenez la mise à niveau

EDIT 4

A partir de vos commentaires,

J'ai réinstallé les fichiers Wordpress Core, j'ai désactivé tous les plugins, je suis passé à Vingt-Quatorze mais rien. Ensuite, j'ai déployé une autre installation wordpress. Ce n'est pas la faute de MAMP. Je suis sûr que c'est la faute de la base de données. Parce que pour une nouvelle base de données wordpress, les fonctions précédente et suivante fonctionnent parfaitement

ce n'est clairement pas un problème avec votre code. Cela semble être un problème de permalien, ou comme vous l'avez dit, peut-être un problème de DB. Téléchargez et installez WP_DBManager , réparez et optimisez votre base de données et voyez si votre problème est résolu.

EDIT 5

Je pense qu'il pourrait y avoir de la lumière de l'autre côté du tunnel. L'utilisateur de (cet article) avait exactement le même problème, et aucune de ces réponses à votre question n'a fonctionné, ce qui est plutôt déroutant, étant donné que ces solutions ont été testées et testées.

Il semble que de la réponse à sa propre question, l'utilisateur ait trouvé le coupable. Il utilise un créateur en nombre pour créer des publications, ce qui entraîne l'échec de sa pagination. Découvrez sa réponse ici

EDIT 6 RÉSOLU

Selon les commentaires du PO, le problème était dû à des posts en double.

1
Pieter Goosen

Le troisième paramètre de votre appel à la fonction previous_post_link() est défini sur true, ce qui limite les résultats aux publications de la même catégorie que celle en cours. Essayez de définir le troisième paramètre sur false (ou de le supprimer complètement) et voyez si cela fait une différence.

Si le troisième paramètre est intentionnel, vérifiez que vous avez bien des publications dans la même catégorie que la publication actuelle. Si vous utilisez une taxonomie personnalisée, vous devez spécifier le nom de la taxonomie personnalisée en tant que cinquième paramètre:

previous_post_link( '%link', 'Pre Post', TRUE, '', 'my_custom_taxonomy' );
0
Philip Newcomer

Remplacez tout ce code de pagination par ceci et changez les classes pour qu'elles correspondent à votre CSS ou vous pouvez rechercher les classes incluses dans ce code dans le fichier style.css de Twenty Twelves themes.

<nav class="nav-single">
<span class="nav-previous"><?php previous_post_link( '%link', '<span class="meta-nav">' . _x( '&larr;', 'Previous post link', 'twentytwelve' ) . '</span> %title' ); ?></span>
<span class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">' . _x( '&rarr;', 'Next post link', 'twentytwelve' ) . '</span>' ); ?></span>
</nav><!-- .nav-single -->

CSS de base

.nav-previous {
    float: left;
    width: 50%;
}

.nav-next {
    float: right;
    text-align: right;
    width: 50%;
}

Source: Vingt Douze

0
Brad Dalton