sql >> Databasteknik >  >> RDS >> Mysql

WordPress pre_get_posts fungerar inte

Du hittar dokumentationen på pre_get_post filtrera här http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Det ser ut som att problemet i själva verket är hur du ställer in post_id:erna som du vill hämta. Om du hänvisar till länken ovan kan du se de olika värdena som kan ställas in på $query objekt som skickas till filtret och post_id är inte en av dem, varför det "fungerar" när du ställer in det och "fungerar inte" när du ställer in p . Det senare är för ett enskilt inläggs-ID, så om du bara ville ha 100 skulle du använda $query->set('p', 100) . Om du vill returnera resultat där inläggs-ID finns i en array använder du $query->set('post__in', array(100, 120)) . Din SQL-kod returnerar bara ID:t, så istället för att returnera objekt kan du bara få en array direkt - jag antar att det återger titeln och print_r rader felsöker bara:

// get results as a numeric array
$post_ids = $wpdb->get_results($request, ARRAY_N);
// pass post id array to $query
$query->set( 'post__in', $post_ids );

Du kanske inte heller får resultat om det finns befintliga motstridiga parametrar inställda på $query . Du kan kontrollera dessa värden med var_dump($query->query_vars) och ställ in alla som kan vara i konflikt med en tom sträng - i ditt fall $query->set( 'm', '' );



  1. MySql select IN-sats sträng kommaavgränsad

  2. SQLAlchemy inget lösenord tillhandahållet fel

  3. MySQL automatisk ökning baserat på grupp

  4. Antal MySQL-anslutningspooler