J'utilise WordPress comme CMS pour un site que je développe. Lorsque je navigue sur des poteaux, je peux utiliser des liens suivants / précédents pour marcher entre des postes. Je veux avoir la même chose sur les pages. P>
Page A devrait être un lien vers la page de sœur suivante B. Page B doit être un lien vers la page de frère précédente A et le prochain frère de sœur C. Page C doit être un lien vers la page de frère précédente b. P>
Y a-t-il un plugin que vous pouvez recommander qui génère ces liens? Je sais qu'il y a Quelques plugins qui font cela, mais je veux spécifiquement un qui se comporte dans mon thème actuel automatiquement. Je sais comment éditer le thème, mais cela briquetez mon site chaque fois qu'une mise à jour du thème est disponible. P>
J'utilise le Mots clair Thème WordPress. P>
6 Réponses :
Pop Le code suivant dans votre fichier Functions.php dans votre répertoire de thème actif:
<?php siblings('after'); ?>
Le thème lumineux a déjà ses propres fonctions .php code>, donc une mise à jour de thème ne serait-elle pas en brique cette fonctionnalité?
Pas un problème, il suffit de le mettre en tant que thème enfant Codex.WordPress.org/child_thèmes
Les étapes incluent: 1) Faites un deuxième répertoire à l'intérieur du répertoire de thèmes avec le nom du thème et '-CHILD' 2) Créer un fichier à l'intérieur appelé Style.CSS Copiez l'en-tête du thème parent Ajout d'une ligne supplémentaire "Modèle". Étant donné que ce fichier remplacera le fichier de style du parent, assurez-vous d'importer le contenu @Import URL ("../wrword / style.css"); 3) Fonctions.php ne remplace pas le fichier d'autres fonctions afin que vous puissiez ajouter le code ci-dessus. Il existe une explication détaillée dans le lien posté dans mon commentaire ci-dessus. Mais lorsque vous mettez à jour le thème, cela n'affectera pas cette fonctionnalité.
J'ai réécrit la fonction pour répondre à mes besoins et ça marche bien. Je n'avais jamais entendu parler de thèmes d'enfants avant - un grand conseil! Merci de votre aide.
C'est génial Jackreichert! Comment puis-je le changer pour que si leur ne soit pas la page suivante ou la page précédente, rien n'est retourné? Merci!
Upt vote 0 vote en baisse c'est génial !! Je joue avec de mauvais plugins pour faire cela et j'ai trouvé cela si simple mais si bon. Comment pourrais-je utiliser cela et échoe le nom de la page précédente ou suivante?
Pour ceux qui demandent comment echo, j'utilise la voie rapide et sale des codes suivants bin.cakephp.org / Enregistré / 81237
Ce plugin a quelques bonnes fonctions pour obtenir la même chose - wordpress.org/extend/plugins/next -Page
Comment modifier cela afin qu'il bouclait de la matrice?
Est-ce que quelqu'un a montré comment la faire boucle comme Onimojo a demandé? Je cherche aussi ça
Travailler parfaitement !. Merci beaucoup. Voté.
À première vue, cela semble fonctionner, mais (au moins sur mon site), il ne renvoie pas réellement les liens corrects. On dirait que ce code consiste à trouver les frères et sœurs via la page ID de page. C'est bon si vos identifiants de page sont tout le bon ordre, mais je suppose que beaucoup de gens modifient manuellement l'ordre de leurs pages à l'aide de «commande» dans le backend de l'administration. Peut-être que la réponse pourrait être modifiée pour avertir les personnes que cela ne renvoie que les liens corrects si vous n'avez pas commandé manuellement les pages dans le backend d'administration?
Vous voudrez peut-être ajouter une vérification et une manipulation hors limites pour votre réseau (au cas où il n'y a pas de pages suivantes / précédentes). De plus, en ce qui concerne la commande: vous pouvez ajouter le paramètre trier_column code> avec la valeur
menu_order code> pour obtenir la commande pages comme configuré dans WordPress et non commandé par nom. Voir codex.wordpress.org/function_reference/get_pages . Vous pouvez également spécifier d'autres valeurs.
<?php $newrenderViews = new renderViews() ; $back_next = $newrenderViews->siblings(); $next = $back_next['next'] ; $next_title = $next['title'] ; $next_link = $next['perm_link'] ; $back = $back_next['back'] ; $back_title = $back['title'] ; $back_link = $back['perm_link'] ; ?> <div class="section" > <div class="content_wrapper " style="background-color: #8A8C8F; width: 970px;"> <p class="navbar-text pull-right"> <a href="<? echo $next_link; ?>" class="navbar-link" style="color: #ffffff;">Next - <?php echo $next_title ; ?></a> </p> <p class="navbar-text pull-left"> <a href="<? echo $back_link; ?>" class="navbar-link" style="color: #ffffff;margin-left: 340px;">Go back - <?php echo $back_title ; ?></a> </p> </div> </div>
Cela me donne une erreur: Erreur fatale: Classe 'Rendervies' Non trouvé Code>
Ouch ma faute rend visite () devrait être une classe ayant des frères et sœurs de la fonction () ...
Un extrait de ce que j'ai développé à partir des réponses ici (pour obtenir un véritable lien et le titre de poste en action) - peut prouver utile à quelqu'un!
$closest = array('before'=>get_permalink($siblings[$ID-1]->ID),'after'=>get_permalink($siblings[$ID+1]->ID)); $name = array('before'=>get_the_title($siblings[$ID-1]->ID),'after'=>get_the_title($siblings[$ID+1]->ID)); if ($link == 'before' || $link == 'after') { echo '<a href="' . $closest[$link] . '">'; echo '<span>' . $name[$link] . '</span></a>'; } else { return $closest; }
Après avoir essayé plusieurs solutions, je fais de mon mieux pour ne pas installer un autre plugin, à la fin, la seule chose qui fonctionnait était un plug-in gratuit: page suivante, pas le message suivant . P>
(J'ai eu des problèmes avec les solutions données ici, je pense peut-être parce que je commande manuellement em> les pages de la section des pages de WordPress admin. Vous pouvez sélectionner la commande manuellement. Alors ma première page de la La hiérarchie peut avoir un identifiant de 100, et la deuxième page peut avoir un identifiant de 10. L'ID de page n'est pas la manière dont mes pages sont commandées.) P>
du WordPress Codex
<?php $pagelist = get_pages('sort_column=menu_order&sort_order=asc'); $pages = array(); foreach ($pagelist as $page) { $pages[] += $page->ID; } $current = array_search(get_the_ID(), $pages); $prevID = $pages[$current-1]; $nextID = $pages[$current+1]; ?> <div class="navigation"> <?php if (!empty($prevID)) { ?> <div class="alignleft"> <a href="<?php echo get_permalink($prevID); ?>" title="<?php echo get_the_title($prevID); ?>">Previous</a> </div> <?php } if (!empty($nextID)) { ?> <div class="alignright"> <a href="<?php echo get_permalink($nextID); ?>" title="<?php echo get_the_title($nextID); ?>">Next</a> </div> <?php } ?> </div><!-- .navigation -->
Cela fonctionne bien! Un groupe d'autres solutions est basé sur la post-ID, mais celui-ci à l'aide de menu_order est exactement ce dont j'avais besoin. Merci!
Voici une autre fonction basée sur la réponse de Jackreichert. Avec la fonctionnalité ajoutée que cela enveloppe jusqu'au dernier / premier frère lorsque vous êtes à la fin de la liste des frères et sœurs, vous pouvez donc boucle sans fin. Il utilise également l'ordre de menu.
function get_sibling_link($link) { global $post; $siblings = get_pages('sort_column=menu_order&child_of='.$post->post_parent.'&parent='.$post->post_parent); foreach ($siblings as $key => $sibling){ if ($post->ID == $sibling->ID){ $current_id = $key; } } $closest = [ 'before' => get_permalink( $siblings[$current_id-1]->ID ), 'after' => get_permalink( $siblings[$current_id+1]->ID ) ]; if($siblings[$current_id-1]->ID == '' ){ $closest['before'] = get_permalink( $siblings[count($siblings)-1]->ID ); } if($siblings[$current_id+1]->ID == '' ){ $closest['after'] = get_permalink( $siblings[0]->ID ); } if ($link == 'before' || $link == 'after') { echo $closest[$link]; } else { return $closest; } }
Merci, cela a aidé à développer ma solution :)
Qu'est-ce qui consisterait en une page de frère de sohange? Enfants du même parent? Basé à la date? Ordre du menu?
Enfants du même parent, ordre déterminé par ordre de menu.