webentwicklung-frage-antwort-db.com.de

Arbeiten mit query_posts (Arrays und Abfragezeichenfolgen)

Ich versuche, die Suchanfrage zusammen mit einer Reihe von Argumenten zu verwenden, um die Suchergebnisse einzugrenzen, aber ich versage schrecklich. Das habe ich bisher.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;          

$query_string = 's=test&category=wordpress'      

$s_array = array(
    'post_type' => 'blog',
    'caller_get_posts' => 1, 
    'paged' => $paged, 
    'meta_query' => array(
        array(
            'key' => 'votes_percent',
            'value' => '50',
            'compare' => '>',
            'type' => 'numeric',
        )
    )
);
$s_query = http_build_query($s_array);
$is_query = '&' . $s_query;
$s_streaming = $query_string . $is_query;  
query_posts($s_streaming);

Beim ausgeben von $ s_streaming bekomme ich

s=test&category=wordpress&post_type=blog&caller_get_posts=1&paged=1&meta_query%5B0%5D%5Bkey%5D=votes_percent&meta_query%5B0%5D%5Bvalue%5D=50&meta_query%5B0%5D%5Bcompare%5D=%3E&meta_query%5B0%5D%5Btype%5D=numeric

Wenn ich die meta_query-Schlüssel entferne, funktioniert es. Ich vermute, dass sich dort mein Problem befindet.

Es funktioniert gut so

query_posts($s_array); //just using the array to filter

query_posts($query_string); //just using the search query
//$query_string = 's=test&category=wordpress';

Ich versuche, die Zeichenfolge für die Abfrage zu erstellen, da dies fehlschlägt.

query_posts($query_string . $s_array); //using both

Kann mich jemand in die richtige Richtung weisen?

1
TimothyJr

Ich würde vorschlagen, $query_string nicht zu verwenden, um die Dinge zu vereinfachen. Wenn Sie ein Array verwenden, halten Sie sich an das Array-Formular für die Abfragevariablen:

global $wp;
$paged = ((int)get_query_var('paged')) ? (int)get_query_var('paged') : 1;
$s_array = array(
    'post_type' => 'blog',
    'caller_get_posts' => 1,
    'paged' => $paged,
    'meta_query' => array(
        array(
            'key' => 'votes_percent',
            'value' => '50',
            'compare' => '>',
            'type' => 'numeric',
        )
    )
);
$new_query = array_merge( $s_array, (array)$wp->query_vars );
query_posts($new_query);
2
John P Bloch

Wenn Sie versuchen, $query_string und $s_array zu kombinieren, versuchen Sie Folgendes ...

<?php

    //We use values of 's' and 'category' to add values to $s_array
    $query_string = 's=test&category=wordpress';

    $s_array = array(
        'post_type' => 'blog',
        'caller_get_posts' => 1, 
        'paged' => $paged, 
        'meta_query' => array(
        array(
            'key' => 'votes_percent',
            'value' => '50',
            'compare' => '>',
            'type' => 'numeric',
            )
        ),
        's' => 'test',
        'category' => 'wordpress'
    );

    //Use $s_array for query_posts directly
    query_posts($s_array);
?>

Ich denke, das wird funktionieren ...

0