web-dev-qa-db-fra.com

Liens post précédent/suivant affichant la catégorie incorrecte que celle souhaitée

Je souhaite que mon single.php affiche les messages de la même catégorie que les messages précédents et suivants situés sous le message. Le problème est que chacune de mes publications appartient à plusieurs catégories et qu'elles sont affichées dans l'une des autres catégories (24) par rapport à celle que je souhaite afficher (27). Est-ce que cela a du sens?

Exemple de catégories:

Caractères (catégorie parente) (ID de sous-catégories énumérées ci-dessous :)

  • 24 (Cet ID de catégorie est affiché à la place.)
  • 27 (C'est l'ID de la catégorie que je veux afficher.)

Maintenant, ma question est la suivante: comment choisir la catégorie dans laquelle je veux être retiré (27) au lieu de celle qui est automatiquement retirée (24)? Voici mon code ci-dessous (que j'ai trouvé et que j'ai tripoté), avec ce que j'ai essayé jusqu'à présent.

    <?php
    if (is_single() && in_category('stories')) {
        $post_id = $post->ID;
        $cat = get_the_category(); //I've tried changing this to my category (both ID and slug)
        $current_cat_id = $cat[0]->cat_ID;  //Also tried plugging ID and slug

        $args = array(
            'category' => $current_cat_id, //Also tried plugging ID and slug
            'orderby' => 'post_date',
            'order' => 'DESC'
        );
        $posts = get_posts($args);

        $ids = array();
        foreach ($posts as $thepost) {
            $ids[] = $thepost->ID;
        }

        $thisindex = array_search($post_id, $ids);
        $previd = $ids[$thisindex - 1];
        $nextid = $ids[$thisindex + 1];

        if (!empty($nextid)) {
            ?><div class="double-grid"><a rel="next" href="<?php echo get_permalink($nextid) ?>"><div class="image-tile tile-on-archive-page" style="background-image: url('<?php echo get_the_post_thumbnail_url($nextid); ?>'"> <div class="gold-button">LAST STORY >></div></div></a></div><?php
        }
        if (!empty($previd)) {
            ?><div class="double-grid"><a rel="prev" href="<?php echo get_permalink($previd) ?>"><div class="image-tile tile-on-archive-page" style="background-image: url('<?php echo get_the_post_thumbnail_url($previd); ?>'"> <div class="gold-button">NEXT STORY >></div></div></a></div><?php
        }
    }
    ?>
1
finamf92

Hazah! Je pensais le poster ici, mais j'ai travaillé avec quelqu'un sur les forums de développement sur Wordpress.org et ils ont en fait résolu le problème pour moi.

Vous pouvez voir la solution et les réglages ici: Sujet du forum WordPress.org

0
finamf92

Votre problème de code est que vous n'obtenez que la première catégorie d'un article, car $cat[0] est la première, non actuelle.

À l'intérieur de la boucle:

<?php
previous_post_link( // prints the formatted link
    '<span>&laquo; %link</span>',  // beautifying around
    'Prev in this cat',            // the text (%link) to be used in the span above
    true,                          // confirm that you want only this category
    '',                            // no categories to exclude
    'category'                     // taxonomy name
);

echo " | "; // just a separator between next and prev

/* The same setup here, not shown to keep the answer clean */
next_post_link();

Voir previous_post_link () pour les paramètres.

Si vous êtes en dehors de The Loop, faites le moi savoir, je mettrai à jour la réponse et fournirai le code supplémentaire et les commentaires.

0
Max Yudin