sql >> Base de Datos >  >> RDS >> Mysql

WordPress pre_get_posts no funciona

Puede encontrar la documentación en pre_get_post filtra aquí http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Me parece que el problema es, de hecho, cómo está configurando los post_ids que desea recuperar. Si consulta el enlace anterior, puede ver los diferentes valores que se pueden establecer en el $query objeto que se pasa al filtro, y post_id no es uno de ellos, por lo que "funciona" cuando lo configura y "no funciona" cuando configura p . El último es para una ID de publicación única, por lo que si solo quisiera 100, usaría $query->set('p', 100) . Si desea obtener resultados en los que el ID de la publicación está en una matriz, use $query->set('post__in', array(100, 120)) . Su código SQL solo devuelve la ID, por lo que en lugar de devolver objetos, puede obtener una matriz directamente; supongo que repetirá el título y print_r las líneas solo se están depurando:

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

Es posible que tampoco obtenga resultados si existen parámetros en conflicto establecidos en $query . Puede verificar estos valores con var_dump($query->query_vars) y establezca cualquiera que pueda estar en conflicto en una cadena vacía; en su caso, $query->set( 'm', '' );