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; ?>
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.
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' );
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( '←', 'Previous post link', 'twentytwelve' ) . '</span> %title' ); ?></span>
<span class="nav-next"><?php next_post_link( '%link', '%title <span class="meta-nav">' . _x( '→', '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