Wie rufe ich programmgesteuert Beiträge ab, die einer Suchanfrage in WordPress entsprechen?

Lesezeit: 3 Minuten

Benutzeravatar von Alan Bellows
Alan Balg

In meinem Plugin-Code möchte ich a ausführen WP_Query (oder ähnlich), der alle Beiträge zurückgibt, die mit einer bestimmten Abfragezeichenfolge übereinstimmen, als ob der Benutzer dieselbe Zeichenfolge in das WordPress-Suchformular eingegeben hätte. Vielleicht bin ich nur dicht, aber ich finde anscheinend keinen Weg, dies zu tun. Ich würde erwarten, einen speziellen Parameter für zu haben WP_Querywie zum Beispiel matchingaber ich sehe keinen Beweis dafür.

Ich werde anfangen, die WordPress-Codebasis durchzugehen, um zu sehen, wie es intern gemacht wird, und ich werde die Antwort hier posten, wenn ich sie finde. Ich dachte nur, jemand könnte es zufällig auswendig wissen.

Benutzeravatar von gradyetc
gradetc

Übergeben einer Abfragevariablen von “s” an WP_Query mit einem Suchbegriff filtert Beitragsergebnisse nach Suchbegriff:

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

Die entsprechende SQL WHERE Die von dieser Abfrage generierte Klausel sieht folgendermaßen aus:

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

Die Standardsuche enthält die oben gezeigten Platzhalter, was höchstwahrscheinlich das ist, wonach Sie suchen. Wenn Sie eine exakte Suche wünschen, können Sie auch eine Abfragevariable übergeben "exact" => true.

Einzelheiten siehe get_posts Methode von WP_Query in wp-includes/query.php.

  • Können Sie uns bitte sagen, nachdem Sie die Abfragevariable an s übergeben haben, wie ich die Liste der Blogs trotz des Inhalts des durchsuchten Blogs erhalten kann, da ich dasselbe getan habe, aber es gibt mir den Inhalt des Beitrags trotz der Liste des Blogs

    – Heil1311

    3. August 2017 um 6:32 Uhr


Benutzeravatar von Aram Kocharyan
Aram Kocharyan

Ich verwende 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 wird benötigt, wenn Sie mit benutzerdefinierten Beitragstypen arbeiten möchten. suppress_filters verhindert, dass der Inhalt formatiert wird, wenn Sie ihn analysieren müssen. posts_per_page gibt alle Beiträge zurück, nicht den Standardwert pro Seite.

  • Hilfreiche Ergänzungen, aber wo geben Sie das Suchwort ein?

    – Khom Nazid

    2. September 2019 um 23:26 Uhr

Etwas wie das?

// 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 dies versuchen:

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

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

Ich glaube, Sie suchen das compare

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

aus WordPress-Dokumentation

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

Benutzeravatar von mrphpguru
mrphpguru

Dies ist eine einfachere und einfachere Art der Suche:

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

1401350cookie-checkWie rufe ich programmgesteuert Beiträge ab, die einer Suchanfrage in WordPress entsprechen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy