[Gelöst] pre_get_posts und meta-value nicht gesetzt
-
Hallo,
hoffe ihr könnt mir weiterhelfen.Wie kann ich bei
pre_get_posts
sagen, dass mir alle beiträge angezeigt
werden die NICHT das meta_value „special“ besitzen?Versucht habe ich
// $query->set( 'meta_value', '' ); // $query->set( 'meta_value', 0 ); // $query->set( 'meta_value', false );
mein code sieht folgerndermaßen aus
if(isset($_GET['special'])) { $query->set( 'meta_key', 'special' ); $query->set( 'meta_value', 1 ); return $query; } else { $query->set( 'meta_key', 'special' ); $query->set( 'meta_value', ????????? ); return $query; }
Freue mich über jeden Tipp 🙂
-
Ist seit 3.5 möglich: http://core.trac.wordpress.org/ticket/18158
Du erstellst Dir also eine neue Meta-Query mit dem compare-Parameter auf „NOT EXISTS“:
$meta-check = array( array( 'key' => 'meta_key', 'compare' => 'NOT EXISTS' ) )
und fügst das in den normnalen Workflow ein:
function your_function($query) { if ( !is_admin() && $query->is_main_query() ) { $query->set( 'meta_key', 'special' ); $query->set( 'meta_value', 'value' ); } } add_action( 'pre_get_posts', 'your_function' );
Quelle: http://devotepress.com/wordpress-coding/when-to-use-pre_get_posts-in-wordpress/#.UsF2q_a140w
Und hast dann dies hier (abgewandelt vom Event-Beispiel von Bill Erickson):
/** * Customize Event Query using Post Meta * * @author Bill Erickson * @link http://www.billerickson.net/customize-the-wordpress-query/ * @param object $query data * */ function be_special_query( $query ) { if( $query->is_main_query() && !$query->is_feed() && !is_admin() ) { $meta_query = array( array( 'key' => 'special', /* 'value' => '', wird nicht benötigt, da ja nur auf Existenz geprüft wird */ 'compare' => 'NOT EXISTS' ) ); $query->set( 'meta_query', $meta_query ); } } add_action( 'pre_get_posts', 'be_special_query' );
Gesetzt wird also nur das eigene Query und darin ist in dem Array der Vergleichswert mit „NOT EXISTS“ angeben, so kann man Meta-Values auf Existenz prüfen ohne das überall ein Default-Wert wie false stehen muss.
Der Code ist ungetestet, wenn Du erfolgreich warst, wäre es cool, wenn Du nochmal Feedback geben würdest ob und wie es geklappt hat!
Danke.
Gruß, Torsten
Hey Torsten,
danke dir!
- Das Thema „[Gelöst] pre_get_posts und meta-value nicht gesetzt“ ist für neue Antworten geschlossen.