web-dev-qa-db-fra.com

WP_Query ne renvoie aucun résultat

J'utilise wp_query pour créer une requête personnalisée qui récupère les résultats de la recherche, mais renvoie 0 résultats. Voici le code:

$query = 's=the&posts_per_page=5&paged=1';
$custom_query = new WP_Query();
$custom_query->query($query);

if( $custom_query->have_posts() ) {
        while ( $custom_query->have_posts() ) : $custom_query->the_post();
                    $this->get_article();
        endwhile;
}
else
        $this->posts_404();

Lorsque je recherche le mot "le" dans la zone de recherche de l'interface utilisateur, 37 occurrences sont affichées, mais la recherche du mot "le" avec ma requête personnalisée renvoie 0. Je suppose donc que ma requête doit poser un problème.

Résultat: de print_r($Custom_query):

WP_Query Object ( 
 [query_vars] => Array 
  ( [s] => the 
    [posts_per_page] => 5 
    [paged] => 1 
    [error] => 
    [m] => 0 
    [p] => 0 
    [post_parent] => 
    [subpost] => 
    [subpost_id] => 
    [attachment] => 
    [attachment_id] => 0 
    [name] => 
    [static] => 
    [pagename] => 
    [page_id] => 0 
    [second] => [minute] => [hour] => [day] => 0 [monthnum] => 0 [year] => 0 
    [w] => 0 
    [category_name] => [tag] => [cat] => [tag_id] => [author_name] => [feed] => [tb] => [comments_popup] => [meta_key] => [meta_value] => [preview] => [sentence] => [fields] => 
    [category__in] => Array ( ) 
    [category__not_in] => Array ( ) 
    [category__and] => Array ( ) [post__in] => Array ( ) [post__not_in] => Array ( ) [tag__in] => Array ( ) [tag__not_in] => Array ( ) [tag__and] => Array ( ) [tag_slug__in] => Array ( ) [tag_slug__and] => Array ( ) 
[ignore_sticky_posts] => [suppress_filters] => 
[cache_results] => 1 
[update_post_term_cache] => 1
[update_post_meta_cache] => 1 
[post_type] => any [nopaging] => 
[comments_per_page] => 50 [no_found_rows] => 
[search_terms] => Array ( [0] => the ) [order] => DESC ) 
[tax_query] => WP_Tax_Query Object ( [queries] => Array ( ) [relation] => AND )    
[meta_query] => WP_Meta_Query Object ( [queries] => Array ( ) [relation] => )    
[post_count] => 0 
[current_post] => -1 
[in_the_loop] => 
[comment_count] => 0 
[current_comment] => -1 
[found_posts] => 0 
[max_num_pages] => 0 
[max_num_comment_pages] => 0 
[is_single] => [is_preview] => [is_page] => [is_archive] => [is_date] => [is_year] => [is_month] => [is_day] => [is_time] => [is_author] => [is_category] => [is_tag] => [is_tax] => 
[is_search] => 1 
[is_feed] => [is_comment_feed] => [is_trackback] => [is_home] => [is_404] => [is_comments_popup] => [is_paged] => [is_admin] => [is_attachment] => [is_singular] => [is_robots] => [is_posts_page] => [is_post_type_archive] => 
[query_vars_hash] => 16a0222409543c8384496148e5b60565 
[query_vars_changed] => [thumbnails_cached] => 
[query] => Array ( [s] => the [posts_per_page] => 5 [paged] => 1 ) [request] => SELECT * FROM wp_posts WHERE 1=2 [posts] => Array ( ) ) 
1
littledynamo

Prenons la forme plus agréable de ce que vous avez posté dans une autre réponse

$args = array(
    's' => 'the',
    'posts_per_page' => 5,
    'paged' => 1
);
$custom_query = new WP_Query($args);

Je vous recommande fortement d'utiliser WP_Query avec un tableau d'arguments et de passer via le constructeur comme ceci.

Regardons vos arguments de plus près.

'paged' => 1

Paged est le numéro de page à afficher.

Ceci dit, affichez la page 2. Vous utilisez des ordinateurs et le premier numéro estet non1.

Changer en:

'paged' => 0

Vous avez également manqué un appel à wp_reset_postdata(); pour nettoyer après vous-même, et vous n'avez jamais spécifié le type de message, son statut et si le champ de recherche effectue une recherche standard ou une recherche modifiée par un plugin.

3
Tom J Nowell

Essayez d'ajouter & post_type = any à votre requête

$query = 's=the&posts_per_page=5&paged=1&post_type=any';
0
Toby

Essayez ceci, puis ajoutez votre boucle -

$args = array(
    's' => 'the',
    'posts_per_page' => 5,
    'paged' => 1
);
$custom_query = new WP_Query($args);

Vous devez passer les arguments lorsque vous lancez la requête. Sinon, vous configurez simplement une requête vide, puis l'utilisation de $custom_query->query($args); indique uniquement à la requête quels arguments utiliser, elle ne l'exécute pas en réalité.

0
David Gard

Votre code fonctionne pour moi, à la fois comme vous l'avez écrit et dans quelques versions abrégées (New WP_Query($query) et New Wp_Query('s=the')), ce qui est logique. Ceux-ci devraient être équivalents. Il doit y avoir quelque chose dans un plugin ou dans votre thème qui en est la cause. Recherchez le code qui manipule WP_Query-- posts_where, posts_clauses, pre_get_posts, etc. Je ne pense pas que ce soit vraiment un problème WP_Query.

0
s_ha_dum

On dirait qu'il y a un plugin ou quelque chose qui gêne. Essayez d’ajouter suppress_filters = true à vos arguments de requête pour voir si cela résout le problème. Si cela fonctionne, vérifiez quel plugin/thème est en train de jouer avec votre requête.

0
MZAweb