Utilisation de l’objet WP_Query (Créer un compte)

  • Statut : non résolu
9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Messages
  • #473701
    erehcab
    Participant
    Chevalier WordPress
    248 contributions

    Bonjour à tous,

    Ma configuration WP actuelle
    – Version de WordPress : 2.8.3
    – Thème utilisé : personnel
    – Nom de l’hebergeur : localhost
    – Adresse du site : localhost

    Problème(s) rencontré(s) :

    J’utilise régulièrement dans mes thèmes WP l’objet WP_Query pour appeler un article ou bien une page en particulier. Je l’utilise de cette manière :

    <?php
    $my_query = new WP_Query('page_id=1');
    while ( $my_query->have_posts() ) : $my_query->the_post();
    …..
    endwhile;
    ?>

    Régulièrement cela me pose des problèmes, par exemple lorsque je fais appel à cette objet et qu’après j’utilise le plugin breadcrumb; le fils d’arianne m’affiche le titre de l’élément chargé via l’objet appeler Wp_Query juste avant. Autre exemple; parfois je fais un appel de page ou article via Wp_Query il malgré le fait que la page existe bien et que l’appel est bien fait l’instance de l’objet ne contient aucune donnée …

    J’ai d’abord pensé que la variable $my_query était une variable globale et que je l’écrasait en stockant l’instance de l’objet Wp_Query dedans mais même en changeant le nom de la variable j’ai toujours le problème.

    Quelqu’un sait il pourquoi ça fait ça ?

    #689110
    Olivier
    Participant
    Maître WordPress
    1415 contributions

    certains plugins vont se hooker sur toute query pour la modifier… essaye sans aucun plugin pour voir ce que cela donne…

    #689111
    erehcab
    Participant
    Chevalier WordPress
    248 contributions

    Merci pour ta réponse.

    Effectivement ça à l’air de fonctionner pour le cas ou l’instance de l’objet ne contenait aucune valeurs alors que l’appel était bien fait .

    Comment je peux faire les empêcher de se hooker sur toute les query ?

    Je viens de me rendre compte que la cause est le plugin breadcrumb-navxt qui amenait le problème.

    #689112
    Olivier
    Participant
    Maître WordPress
    1415 contributions

    pour les empêcher de se hooker, il faudrait que tu fasses un remove_action de l’action sur laquelle le plugin s’est hooké.

    #689113
    erehcab
    Participant
    Chevalier WordPress
    248 contributions

    Comment je peux repérer le hook dans le plugin ?

    #689114
    Olivier
    Participant
    Maître WordPress
    1415 contributions

    il faut que tu édites le source et que tu fasses une recherche sur add_action ou add_filter

    #689115
    xknown
    Participant
    Chevalier WordPress
    119 contributions

    Je suis pas sûr d’avoir bien compris ton problème, mais je crois que tu dois appeler wp_reset_query après le while. Comme ça, tu reviens à l’object wp_query précédent (c’est pas tout à fait ça, mais je sais pas comment t’expliquer en français 🙂 ).

    have_posts() ) : $my_query->the_post();

    …..

    endwhile;

    wp_reset_query();

    ?>

    #689116
    erehcab
    Participant
    Chevalier WordPress
    248 contributions

    J’ai essayé plusieurs fois la fonction wp_reset_query(); mais ça ne fonctionnait pas … Je vais re faire un test 🙂

    #689117
    erehcab
    Participant
    Chevalier WordPress
    248 contributions

    J’ai dût faire quelque choses en dur parce que j’avai pas le temps de trop chercher mais aujourd’hui je m’y suis remis et la seul manière de le faire fonctionner sans qu’il vienne modifier la requête générale ça a été de mettre ce code :

    $my_query = new WP_Query(‘p=1&showposts=1’);
    while ( $my_query->have_posts() ) : $my_query->the_post();
    print $post->post_content;
    endwhile;
    wp_reset_query();

    le wp_reset_query() remet la boucle à zéro alors que le rewind_posts() ne fonctionne pas dans mon cas.

    Bizarre, bizarre ….

9 sujets de 1 à 9 (sur un total de 9)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.