2009-08-21 6 views
0

Fondamentalement, je joue avec un plugin qui permet des messages à date future sur les pages d'archives. Ma question est plus large que cette fonctionnalité spécifique, mais tout le monde aime le contexte. J'ai la tête autour de beaucoup de concepts de développement de plugin, mais doit manquer quelque chose de très basique.Quelle est la bonne façon de modifier une requête wordpress dans un plugin?

Je peux réécrire avec succès une requête qui me donne les résultats que je veux comme ceci:

function modify_where($where) { 
    global $wp_query; 
    // define $year, $cat, etc 
    if(is_archive()) { 
    $where = " AND YEAR(wp_posts.post_date)='".$year."' AND wp_term_taxonomy.taxonomy = 'category' AND wp_term_taxonomy.term_id IN ('".$cat."') AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future')"; 
    } 
    return $where; 
} 

add_filter('posts_where', 'catCal_where'); 

Cependant, si je tente de créer une nouvelle wp_ Query('different_query_stuff «) après la boucle principale de la nouvelle requête utilise le même WHERE énoncé ci-dessus.

La question est: Qu'est-ce qui me manque?

Merci.

Répondre

0

Qu'est-ce que vous voulez sans doute faire est de supprimer ce filtre à l'action wp. Ajoutez une action à wp, add_action ('wp', 'my_remove_filter_action', 999) et faites en sorte que 'my_remove_filter_action' supprime le filtre que vous avez placé sur la requête afin qu'elle affecte la requête de page et soit rendue inerte pour le reste de la page charge.

Vous pouvez peut-être trouver un autre filtre qui se déclenche plus tôt que WP pour également supprimer le filtre. Vous voulez essentiellement essayer de limiter cette requête à la requête de la page principale uniquement.

Questions connexes