2012-04-01 15 views
8

In meinem Plugin-Code möchte ich eine WP_Query (oder ähnliches) durchführen, die alle Beiträge zurückgibt, die einer bestimmten Abfrage-Zeichenfolge entsprechen, als ob der Benutzer dieselbe Zeichenfolge in das WordPress-Suchformular eingegeben hätte. Vielleicht bin ich nur dicht, aber ich finde keinen Weg, dies zu tun. Ich würde erwarten, einen speziellen Parameter für WP_Query zu haben, wie matching, aber ich sehe keinen Beweis von einem.Wie programmgesteuert mit einer Suchabfrage in WordPress erstellte Posts abrufen?

Ich werde durch die WordPress Codebase gehen, um zu sehen, wie es intern gemacht wird, und ich werde die Antwort hier posten, wenn ich es finde. Ich dachte nur, dass jemand zufällig etwas davon wissen könnte.

Antwort

19

Passing eine Abfrage Variable " s "Zu WP_Query mit einem Suchbegriff wird post-Ergebnisse nach Suchbegriff filtern:

$query_args = array('s' => 'disquiet'); 
$query = new WP_Query($query_args); 

Die entsprechende SQL WHERE Klausel durch diese Abfrage generiert sieht wie folgt aus:

AND (((wp_posts.post_title LIKE '%disquiet%') OR (wp_posts.post_content LIKE '%disquiet%'))) 

Standardsuche enthält die Platzhalter wie oben gezeigt Das ist wahrscheinlich das, wonach Sie suchen. Wenn Sie eine genaue Suche wünschen, können Sie auch eine Abfrage var "exact" => true übergeben.

Für Details siehe die get_posts Methode von WP_Query in wp-includes/query.php.

+0

Können Sie uns bitte sagen, nach Abfrage Variable vorbei an ist, wie kann ich Liste Blog trotz Inhalts des gesuchten Blog erhalten, wie von I Hat das selbe gemacht, aber es gibt mir Inhalt des Postens trotz der Liste des Blogs – Hetal1311

0

So ähnlich?

// Check the query variable is available 
if(!$wp_query) global $wp_query; // If not, global it so it can be read from 

// Your custom args 
$args = array('the_title' => $search_term); 

// Merge the custom args with any for the query already 
$args = array_merge($args , $wp_query->query); 

// Now do the query 
query_posts($args); 

Oder Sie könnten versuchen Sie dies:

$query = array (
    'the_title' => $search_term 
); 

$queryObject = new WP_Query($query); 
// The Loop... 
0

Ich glaube, Sie suchen, ist diese compare

$args = array(
    'post_type' => 'product', 
    'meta_query' => array(
     array(
      'key' => 'color', 
      'value' => 'blue', 
      'compare' => 'LIKE' 
     ) 
    ) 
); 

von wordpress documentation

compare (string) - Operator to test. Possible values are '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'. Default value is '='. 
1

ich dies in meinem Plugin:

$query = new WP_Query(array(
    'post_type' => 'any', 
    'suppress_filters' => TRUE, 
    'posts_per_page' => '-1' 
)); 

foreach ($query->posts as $post) { 
    // ... 
} 

post_type benötigt, wenn Sie mit benutzerdefinierter Post-Typen arbeiten gehen. suppress_filters verhindert, dass der Inhalt formatiert wird, wenn Sie ihn analysieren müssen. posts_per_page gibt alle Posts zurück, nicht den Standard pro Seite.

-1

Dies ist eine einfache und leichte Art und Weise suchen zu tun:

$query = " 
     SELECT  * 
     FROM  $wpdb->posts 
     WHERE  $wpdb->posts.post_title LIKE '$param2%' 
     AND   $wpdb->posts.post_type = 'wp_exposants' 
     ORDER BY $wpdb->posts.post_title "; 
$wpdb->get_results($query); 
Verwandte Themen