我使用get_posts获取与搜索关键字匹配的帖子列表,问题是我get_posts
的{{1}} parameter默认情况下不会搜索代码并使用如果在标题中找到关键字而不在标记中,则s
将无效。
我的搜索条件是:
任何想法都会很棒。我尝试了“搜索所有内容”插件,但这似乎只适用于WordPress的默认搜索功能。
下面的代码是我尝试过的简化版本,但这不符合所有3个标准。
tag_slug__in
答案 0 :(得分:1)
您可以使用自己的查询。下面是一个例子
$querystr="
SELECT *
FROM $wpdb->posts, $wpdb->term_relationships, $wpdb->term_taxonomy, $wpdb->terms
WHERE ($wpdb->terms.name = '$s'
OR $wpdb->posts.post_content LIKE '%$s%'
OR $wpdb->posts.post_title LIKE '%$s%')
AND $wpdb->posts.ID = $wpdb->term_relationships.object_id
AND $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id
AND $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id
ORDER BY $wpdb->posts.post_date DESC
";
$pageposts = $wpdb->get_results($querystr, OBJECT_K);
foreach ($pageposts as $post): setup_postdata($post);
echo the_title() . '<br /><br />';
endforeach;
答案 1 :(得分:1)
我使用wpdb
查询来获取结果。加入帖子和分类表,然后通过$search_title
获得不同的结果。希望这会奏效。 :)
global $wpdb;
$querystr= "SELECT DISTINCT $wpdb->posts.* FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships
ON ( $wpdb->posts.ID = $wpdb->term_relationships.object_id )
LEFT JOIN $wpdb->term_taxonomy
ON ( $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id )
LEFT JOIN $wpdb->terms
ON ( $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id )
WHERE ( $wpdb->terms.name LIKE '%$search_title%'
OR $wpdb->posts.post_content LIKE '%$search_title%'
OR $wpdb->posts.post_title LIKE '%$search_title%' )
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'product'
ORDER BY $wpdb->posts.post_title ASC";
$query_object = $wpdb->get_results($querystr);
答案 2 :(得分:0)
查看Wordpress提供的Post Clauses过滤器。它允许您直接将MySQL语句插入WP查询。