sql >> Database >  >> RDS >> Mysql

WordPress pre_get_posts werken niet

Je kunt de documentatie vinden op de pre_get_post filter hier http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Het lijkt erop dat het probleem in feite is hoe je de post_ids instelt die je wilt ophalen. Als u naar de bovenstaande link verwijst, kunt u de verschillende waarden zien die kunnen worden ingesteld op de $query object dat aan het filter wordt doorgegeven, en post_id is er niet een van, daarom "werkt" het wanneer je het instelt en "werkt het niet" wanneer je p instelt . De laatste is voor een enkele post-ID, dus als je er maar 100 wilt, gebruik je $query->set('p', 100) . Als je resultaten wilt retourneren waarbij de post-ID in een array staat, gebruik je $query->set('post__in', array(100, 120)) . Uw SQL-code retourneert alleen de ID, dus in plaats van objecten terug te geven, kunt u gewoon rechtstreeks een array krijgen - ik neem aan dat dit de titel en print_r weergeeft regels zijn gewoon aan het debuggen:

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

U krijgt mogelijk ook geen resultaten als er bestaande conflicterende parameters zijn ingesteld op de $query . U kunt deze waarden controleren met var_dump($query->query_vars) en stel eventuele conflicten in op een lege tekenreeks - in jouw geval $query->set( 'm', '' );



  1. Mysql gebruikt geen index in query's met offsets

  2. Hoe een Lock Wait Time-out overschreden fout in MySQL te repareren

  3. Controleer of mysql-database bestaat, voer actie uit op basis van resultaat

  4. Hoe kan ik meerdere kolommen met prioriteit doorzoeken in MySQL?