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 :

contourner les custom posttype


Sujet :

WordPress PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 197
    Points : 89
    Points
    89
    Par défaut contourner les custom posttype
    Bonsoir,
    je vais essayer d'être clair!

    soit un site, classique ( c'est un exemple !):
    ce site contient des articles, puis des voyages et des viles ( toujours des exemples ).

    sur la page accueil, trois sections qui présentent :
    - articles
    - voyages
    - villes
    ( au hasard, deux par section )

    La barre de navigation qui convient ( accueil, articles , voyages, villes).

    Avec des custom-postype, je sais afficher la page d'article, celle des voyages et des villes...( un custom-postype pour chaque ).

    Mais il se trouve que les articles, voyages et villes se ressemblent ( je parles des singles):
    ils ont tous les mêmes champs ACF, remplis ou non, suivant l'article.
    Du coup, ( et parce qu'on me demande de le faire ! ), j'imaginais simplement des articles avec des catégories: sans , villes et voyages.
    Je pense pouvoir refaire la page d'accueil avec les boucles qui vont bien et sélectionner seulement certaines catégories.

    Mais par contre, ( à cause de mon niveau ), je ne sais pas , dans ce cas comment afficher la page d'articles sans , la page des voyages et la page des villes

    voilà, en espérant avoir été clair !
    il doit y avoir un moyen simple mais que je ne connais pas encore !

    Mercii,
    Laurent

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    8 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 8 561
    Points : 13 242
    Points
    13 242
    Par défaut
    avec la fonction "get_post" et le paramètre "cat", vous pouvez indiquer la catégorie des objets à sélectionner :
    https://developer.wordpress.org/refe...ons/get_posts/

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 197
    Points : 89
    Points
    89
    Par défaut
    Bonsoir, je vais me pencher la-dessus et essayer d'être sûr qu'on me demande bien de faire ça,
    car on m'autorise le CPT, mais pas de requêtes WP_Query, seulement une modification de la boucle principale dans des templates d'archives.

    Je reviens dès que j'ai bien compris ce qu'on me demande: ça va aussi avec mon niveau de débutant.
    Je sens que je vais avoir plein de questions !!!

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    8 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 8 561
    Points : 13 242
    Points
    13 242
    Par défaut
    Citation Envoyé par Ushuango Voir le message
    car on m'autorise le CPT, mais pas de requêtes WP_Query, seulement une modification de la boucle principale dans des templates d'archives.
    je n'ai pas compris votre phrase. c'est qui ce "on" ?

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 197
    Points : 89
    Points
    89
    Par défaut
    C'est tout simplement la personne qui me demande de faire comme ça !
    À qui je vais demander quelques explications...

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 197
    Points : 89
    Points
    89
    Par défaut
    Donc, j'ai du nouveau:

    voyages et villes ( des exemples ) sont bien des custom-post-types.
    comme pour la homepage, en cliquant sur les liens villes et voyages, j'affiche tous les posts des villes ou voyages.

    J'ai pour cela des fichiers archive-ville.php et archive-voyage.php .
    Une boucle classique permet de sortir la liste des posts pour chaque archive.

    Mais,( c'est là l'exercice ), pour les villes je n'affiche que trois posts et j'ai une pagination pour le reste des posts ( 3 par 3 ).
    Et pour les voyages, je n'affiche que 2 posts, et même chose que pour les villes.

    Je dois garder la boucle classique pour l'affichage !!
    donc j'ai cherché du côté de $query->set ici: http://developer.wordpress.org/refer...pre_get_posts/.

    Mais je souhaiterait rajouter les conditions à la fonction, qui me permettraient de faire un $query->set( 'posts_per_page', 3 ); si
    je suis sur la page archive-ville.php et [C=php]$query->set( 'posts_per_page', 2 ); lorsque je suis sur l'archive archive-voyage.php.

    Il faudrait un is-archive() et une autre condition: "si dans archive ville" par ex alors 2posts par page...
    Mais je n'arrive pas à savoir comment faire la deuxième condition.

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    8 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 8 561
    Points : 13 242
    Points
    13 242
    Par défaut
    Citation Envoyé par Ushuango Voir le message
    donc j'ai cherché du côté de $query->set ici: http://developer.wordpress.org/refer...pre_get_posts/.
    je crois que le dernier exemple de cette page devrait vous convenir avec le test "is_post_type_archive(...)".

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 197
    Points : 89
    Points
    89
    Par défaut
    Et oui, ça marche ! Avec le nom du custom_post_type en paramètre .
    J'en étais encore à is_archive (...)

    Merci.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 197
    Points : 89
    Points
    89
    Par défaut
    Du coup, je viens de m'apercevoir d'un "truc":

    Lors de l'affichage d'archives, il m'affiche bien le nombre d'archive que j'ai choisi d'afficher en fonction de l'archive, sur le site.
    Mais en backoffice, dans WordPress, si je cliques sur mes villes ou voyages , j'ai le même nombre de posts qui s'affiche !!!!
    Même si WordPress m'indique qu'il y a 15 posts villes, il n'y en a que deux à l'écran. Clique sur toutes les villes ( ou voyages ) n'y change rien.

    Il faut préciser que j'ai fait un add_action('pre_get_posts', 'nom_de_ma_fonction');
    Il y a moyen que ça n'affecte que l'affichage du site et non pas WordPress en backoffice ?
    Pour l'instant, je désactive ma fonction pour travailler. Mais une fois le site terminé, le client lui ne verra que deux villes et pour rajouter des villes ça va pas être facile !

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    8 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 8 561
    Points : 13 242
    Points
    13 242
    Par défaut
    avez vous laissé !is_admin() && $query->is_main_query() && ... comme dans l'exemple du code ?

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 197
    Points : 89
    Points
    89
    Par défaut
    Non !!

    En fait , comme je débute, je code naïvement:
    j'écris quelque chose que je comprends et qui est sensé (d'après ma compréhension) faire ce qu'il faut et ça donne
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function posts_per_page_for_custom_post($query) {
        if(is_post_type_archive('ville')) {
            $query->set('posts_per_page',2);
        } elseif (is_post_type_archive('voyage')) {
            $query->set('posts_per_page', 5);
        }
    }
     
    add_action('pre_get_posts', 'posts_per_page_for_custom_post');

    Avec un effet au delà de ce que je voulais

    Mais après être allé voir sur la documentation is_admin() et is_main_query()
    Tous fonctionne bien mieux !!

    Le problème que je rencontre le plus souvent , c'est qu'il doit y avoir pas mal de fonctions de WordPress et je me dis à chaque fois
    qu'il doit y en avoir une pour mon problème. Quand à savoir laquelle, et quel pourrait être son nom !!

    Merci encore.

    p.s. : puisque vous êtes pratiquement le seul à me répondre ( et à trouver les remèdes ), je précise que tous mes posts (questions ) sur WordPress
    concernent le même exercice !

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

Discussions similaires

  1. Contourner les demandes de confirmation d'Access?
    Par _MattU_ dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/05/2008, 17h40
  2. contourner les popup killers
    Par Shimegi dans le forum Applets
    Réponses: 1
    Dernier message: 19/04/2008, 17h15

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