working というクエリで、2つのメタキーのうちの1つに対して特定のメタ値を持つすべての投稿を呼び出します。
$term = filter_var( $_GET['term'] );
$query = get_posts( [
'post_type' => 'some_cpt_name',
'meta_query' => [
'relation' => 'OR',
[
'key' => 'foo',
'value' => $term,
'compare' => 'LIKE',
],
[
'key' => 'bar',
'value' => $term,
'compare' => 'LIKE',
],
]
] );
$term
をメタキー「foo」または「bar」として、または投稿のタイトルとして持つすべての投稿をクエリする必要があります。問題は どのように 追加の可能なキーとして投稿のタイトルを追加するのですか?
Q: /どのように私は また
$term
がpost_title
にあるかどうかチェックできますか?
OR
句に関するほとんどの質問と同様に、答えも同じです。カスタムクエリを使用するか、WP_Query
フィルタを使用して'posts_clauses'
を変更します。
さて、これは@scribuから示唆されるようにposts_clauses
フィルタ(そして編集)を使った最後の追加です:
function alter_posts_where_clause( $where )
{
global $wpdb;
$term = filter_var( trim( $_GET['term'] ), FILTER_SANITIZE_STRING, FILTER_NULL_ON_FAILURE );
if ( is_null( $term ) )
return $where;
$term = $wpdb->esc_like( $term );
// Append to the WHERE clause:
$where .= $wpdb->prepare( " OR {$wpdb->posts}.post_title LIKE '%s'", "%{$term}%" );
return $where;
}
add_filter( 'posts_where', 'alter_posts_where_clause' );