これは私の亀裂です。ちょっとハッキリですが、うまくいきます。大きな欠点は、複数の用語が呼び出されたときにfailがすべての照会変数を取り除くように、他の照会変数を再追加する必要があることです。
また、私は複数のタクソノミを照会することに対してこれをテストしませんでした。これは特定のタクソノミー内でのみ機能します。自己責任。
function multi_tax_terms($where) {
global $wp_query;
if (strpos($wp_query->query_vars['term'], ',') !== false && strpos($where, "AND 0") !== false) {
// it's failing because taxonomies can't handle multiple terms
//first, get the terms
$term_arr = explode(",", $wp_query->query_vars['term']);
foreach($term_arr as $term_item) {
$terms[] = get_terms($wp_query->query_vars['taxonomy'], array('slug' => $term_item));
}
//next, get the id of posts with that term in that tax
foreach ($terms as $term) {
$term_ids[] = $term[0]->term_id;
}
$post_ids = get_objects_in_term($term_ids, $wp_query->query_vars['taxonomy']);
if (!is_wp_error($post_ids) && count($post_ids)) {
// build the new query
$new_where = " AND wp_posts.ID IN (" . implode(', ', $post_ids) . ") ";
// re-add any other query vars via concatenation on the $new_where string below here
// now, sub out the bad where with the good
$where = str_replace("AND 0", $new_where, $where);
} else {
// give up
}
}
return $where;
}
add_filter("posts_where", "multi_tax_terms");
上記のような手作業によるクエリは、まさに私が使い終わったものです。今は、複数のget_posts()クエリを1つずつ実行したくない場合(そしてそうでない場合)は、動作する唯一の方法です。 – bobsoap
このクエリは、私がしようとしているものでうまくいくようですが、1つの投稿で複数の語句を検索したい場合はどうなりますか? ORをAND(クエリの9行目)に変更しようとしましたが、動作しないようです。 – jasonaburton