Php 如何在WordPress中以编程方式获取与搜索查询匹配的帖子?

Php 如何在WordPress中以编程方式获取与搜索查询匹配的帖子?,php,wordpress,Php,Wordpress,在我的插件代码中,我想执行一个WP\u查询(或类似操作),返回与给定查询字符串匹配的所有帖子,就像用户在WordPress搜索表单中键入相同的字符串一样。也许我只是在装模作样,但我似乎找不到这样做的方法。我希望为WP\u Query提供一个特殊参数,例如匹配,但我看不到任何证据 我将开始浏览WordPress代码库,看看它是如何在内部完成的,如果我找到答案,我会在这里发布答案。我只是想有人可能会马上知道。像这样的事 // Check the query variable is available

在我的插件代码中,我想执行一个
WP\u查询
(或类似操作),返回与给定查询字符串匹配的所有帖子,就像用户在WordPress搜索表单中键入相同的字符串一样。也许我只是在装模作样,但我似乎找不到这样做的方法。我希望为
WP\u Query
提供一个特殊参数,例如
匹配
,但我看不到任何证据

我将开始浏览WordPress代码库,看看它是如何在内部完成的,如果我找到答案,我会在这里发布答案。我只是想有人可能会马上知道。

像这样的事

// 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 );
或者你可以试试这个:

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

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

我相信你在看这是不是
比较

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


比较(字符串)-要测试的运算符。可能的值为“=”、“!=”、“>”、“>=”、“ 将带有搜索项的查询变量“s”传递给
WP\u query
,将按搜索项筛选post结果:

$query_args = array( 's' => 'disquiet' );
$query = new WP_Query( $query_args );
此查询生成的相应SQL
WHERE
子句如下所示:

AND (((wp_posts.post_title LIKE '%disquiet%') OR (wp_posts.post_content LIKE '%disquiet%')))
默认搜索包括如上所示的通配符,这很可能是您正在查找的通配符。如果需要精确搜索,还可以传递查询变量
“精确”=>true


有关详细信息,请参见中的
WP\u查询的
get\u posts
方法。

我在插件中使用此方法:

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

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

如果要使用自定义帖子类型,则需要使用
post\u type
<如果需要分析内容,代码>抑制过滤器将阻止内容格式化<代码>每页帖子将返回所有帖子,而不是每页的默认帖子。

这是一种更简单、更容易的搜索方式:

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

在将查询变量传递给s后,您能否告诉我们,尽管搜索到的博客内容相同,但我如何获得博客列表?我也这样做了,但它提供了帖子内容,尽管博客列表中添加了有用的内容,但您在何处指定搜索关键字?
$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);