2009-08-21 5 views
0

Grundsätzlich spiele ich mit einem Plugin, das zukünftige Beiträge auf Archivseiten ermöglicht. Meine Frage ist breiter als diese spezifische Funktionalität, aber jeder mag einen Kontext.Was ist der richtige Weg, um eine Wordpress-Abfrage in einem Plugin zu ändern?

Ich habe meinen Kopf um viele der Plugin-Entwicklungskonzepte, aber muss etwas sehr grundlegendes fehlen.

Ich kann eine Abfrage erfolgreich neu zu schreiben, die mir die Ergebnisse möchte ich wie folgt gibt:

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'); 

Allerdings, wenn ich ein neues wp_ Query('different_query_stuff ‚) nach der Hauptschleife die neue Abfrage verwendet das gleiche erstellen versuchen, WHERE-Anweisung oben skizziert.

Die Frage ist: Was vermisse ich?

Danke.

Antwort

0

Was möchten Sie wahrscheinlich tun, ist, dass die Filter an der Aktion wp zu entfernen. Fügen Sie eine Aktion bei wp, add_action ('wp', 'my_remove_filter_action', 999) hinzu und lassen Sie die 'my_remove_filter_action' den Filter entfernen, der auf die Abfrage angewendet wird, sodass sie die Seitenabfrage beeinflusst und für den Rest der Seite inaktiviert wird Belastung.

Möglicherweise können Sie einen anderen Filter finden, der früher als WP ausgelöst wird, um den Filter ebenfalls zu entfernen. Sie möchten im Wesentlichen versuchen, diese Abfrage nur auf die Hauptseitenabfrage zu beschränken.

Verwandte Themen