sql >> Databáze >  >> RDS >> Mysql

WordPress pre_get_posts nefunguje

Dokumentaci najdete na pre_get_post filtrovat zde http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Zdá se mi, že problém je ve skutečnosti v tom, jak nastavujete post_id, které chcete načíst. Pokud se podíváte na výše uvedený odkaz, můžete vidět různé hodnoty, které lze nastavit v $query objekt, který je předán filtru, a post_id není jedním z nich, a proto "funguje", když jej nastavíte, a "nefunguje", když nastavíte p . Ten druhý je pro jedno ID příspěvku, takže pokud byste chtěli jen 100, použili byste $query->set('p', 100) . Pokud chcete vrátit výsledky, kde je ID příspěvku v poli, použijte $query->set('post__in', array(100, 120)) . Váš kód SQL pouze vrací ID, takže místo vracení objektů můžete přímo získat pole – předpokládám, že ozvěna názvu a print_r řádky se právě ladí:

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

Výsledky také nemusíte získat, pokud existují konfliktní parametry nastavené v $query . Tyto hodnoty můžete zkontrolovat pomocí var_dump($query->query_vars) a nastavte všechny, které mohou být v konfliktu, na prázdný řetězec – ve vašem případě $query->set( 'm', '' );



  1. Ovladač Google BigQuery ODBC

  2. ignorovat duplicitní výsledky ze smyčky foreach iterující prostřednictvím dotazu mysql

  3. Správný způsob, jak uživatelům poskytnout přístup k dalším schématům v Oracle

  4. Jak importovat VELKÉ soubory sql do tabulky mysql