IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Changer l'ordre de next_post_link et previous_post_link


Sujet :

WordPress PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club Avatar de zombibiot
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2021
    Messages : 5
    Par défaut Changer l'ordre de next_post_link et previous_post_link
    Bonjour à tous,
    Je me suis créé un CPT 'bière' avec une taxonomy 'gamme' et j'aimerai que quand je suis sur ma fiche bière, que je clic sur les flèches de navigations (next_post_link et previous_post_link), que la navigation soit filtré par rapport à ma gamme (ce que j'arrive déjà à faire) mais également par rapport à une meta_key '_position'.
    Voilà la page en question :
    https://biereratz.n12404.com/bieres/?ancre=speciales
    Et voici mon bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    function get_adjacent_past_biere_join($join)
    {
        if (is_singular('biere')) {
            global $wpdb;
            $new_join = $join . "LEFT JOIN $wpdb->postmeta AS m ON p.ID = m.post_id ";
            return $new_join;
        }
        return $join;
    }
    add_filter('get_previous_post_join', 'get_adjacent_past_biere_join');
    add_filter('get_next_post_join', 'get_adjacent_past_biere_join');
     
    function get_prev_past_biere_where($where)
    {
        if (is_singular('biere')) {
            global $wpdb, $post;
            $id = $post->ID;
            $new_where = "WHERE p.post_type = 'biere' AND p.post_status = 'publish' AND m.meta_key = '_position'";
            return $new_where;
        }
        return $where;
    }
    add_filter('get_previous_post_where', 'get_prev_past_biere_where');
     
    function get_next_past_biere_where($where)
    {
        if (is_singular('biere')) {
            global $wpdb, $post;
            $id = $post->ID;
            $new_where = "WHERE p.post_type = 'biere' AND p.post_status = 'publish' AND m.meta_key = '_position'";
            return $new_where;
        }
        return $where;
    }
    add_filter('get_next_post_where', 'get_next_past_biere_where');
     
    function get_prev_past_biere_sort($sort)
    {
        if (is_singular('biere')) {
            global $wpdb;
            $new_sort = " GROUP BY p.ID ORDER BY m.meta_value DESC";
            return $new_sort;
        }
        return $sort;
    }
    add_filter('get_previous_post_sort', 'get_prev_past_biere_sort');
     
    function get_next_past_biere_sort($sort)
    {
        if (is_singular('biere')) {
            global $wpdb;
            $new_sort = " GROUP BY p.ID ORDER BY m.meta_value ASC";
            return $new_sort;
        }
        return $sort;
    }
    add_filter('get_next_post_sort', 'get_next_past_biere_sort');
    HELP ME

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 701
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 701
    Par défaut
    sur la page de toutes les bières, est ce que les bieres sont affichées dans le bon ordre ?

  3. #3
    Nouveau membre du Club Avatar de zombibiot
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2021
    Messages : 5
    Par défaut
    Citation Envoyé par mathieu Voir le message
    sur la page de toutes les bières, est ce que les bieres sont affichées dans le bon ordre ?
    Alors oui, sur la page de toutes les bières, c'est le bon ordre qu'il faut afficher.

    J'ai réussi à faire ce que je voulais avec ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    $gamme = get_the_terms($post->ID, 'gamme');
     
    $all_posts = new WP_Query(array(
        'post_type' => 'biere',
        'gamme' => $gamme[0]->slug,
        'meta_key' => '_position',
        'orderby'  => '_position',
        'order' => 'ASC',
        // 'posts_per_page' => -1
    ));
     
    foreach ($all_posts->posts as $key => $value) {
        if ($value->ID == $post->ID) {
            $nextID = $all_posts->posts[$key + 1]->ID;
            $prevID = $all_posts->posts[$key - 1]->ID;
            break;
        }
    }
     
    if ($prevID) {
    	if ($gamme[0]->slug == 'tradition' || $gamme[0]->slug == 'speciales') {
    		echo '<a href="' . get_the_permalink($prevID) . '"><i class="bi bi-chevron-left color-tradition-1"></i></a>';
    	elseif ($gamme[0]->slug == 'bio') {
    		echo '<a href="' . get_the_permalink($prevID) . '"><i class="bi bi-chevron-left color-bio-1"></i></a>';
    	} elseif ($gamme[0]->slug == 'r-de-ratz') {
    		echo '<a href="' . get_the_permalink($prevID) . '"><i class="bi bi-chevron-left color-r-de-ratz-1"></i></a>';
    	} else {
    		echo '<a href="' . get_the_permalink($prevID) . '"><i class="bi bi-chevron-left"></i></a>';
    	}
    }
     
    if ($nextID) {
    	if ($gamme[0]->slug == 'tradition' || $gamme[0]->slug == 'speciales') {
    		echo '<a href="' . get_the_permalink($nextID) . '"><i class="bi bi-chevron-right color-tradition-1"></i></a>';
    	} elseif ($gamme[0]->slug == 'bio') {
    		echo '<a href="' . get_the_permalink($nextID) . '"><i class="bi bi-chevron-right color-bio-1"></i></a>';
    	} elseif ($gamme[0]->slug == 'r-de-ratz') {
    		echo '<a href="' . get_the_permalink($nextID) . '"><i class="bi bi-chevron-right color-r-de-ratz-1"></i></a>';
    	} else {
    		echo '<a href="' . get_the_permalink($nextID) . '"><i class="bi bi-chevron-right"></i></a>';
    	}
    }
    Je recrée les fonctions next_post_link et previous_post_link en utilisant au départ un WP_Query avec tous mes filtres puis je boucle sur tous mes posts, quand je suis sur le post de la page en question, je stocke l'ID + 1 qui est ma bière suivante puis l'ID - 1 qui la bière précédente. Je sorts de ma bouche.
    Il ne me reste plus qu'à utiliser get_the_permalink($prevID) et get_the_permalink($nextID).
    J'espère que ça aidera certain, j'y ai passé 2 jours

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Thunderbird] changer l'ordre des comptes
    Par Eusebius dans le forum Thunderbird
    Réponses: 2
    Dernier message: 26/07/2006, 10h08
  2. Changer l'ordre ordinal d'une colonne
    Par mictif dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/04/2006, 09h30
  3. Réponses: 1
    Dernier message: 29/03/2006, 12h33
  4. Rajout colonne - changer l'ordre des colonnes ?
    Par Coptere dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/09/2005, 11h56
  5. changer l'ordre des dates dans table
    Par lordyan dans le forum Requêtes
    Réponses: 11
    Dernier message: 14/01/2005, 12h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo