selamlar,
bu işinizi görecektir.
add_filter( 'posts_search', 'nitelikleri_ara');
function nitelikleri_ara( $search, $query ) {
global $wpdb, $wp;
$qvars = $wp->query_vars;
if ( is_admin() || empty($search) || ! ( isset($qvars['s']) && ! empty($qvars['s']) ) ) {
return $search;
}
// Aramaya dahil etmek istediğiniz taksonomiyi burada listeleyin
$taxonomy = 'pa_marka';
/*
birden fazla taksonomiyi aramaya dahil etmek isterseniz buradaki yorum satırlarını silin
// Aramaya dahil etmek istediğiniz taksonomileri burada listeleyin
$taxonomies = array('pa_marka', 'pa_nitelik', 'pa_nitelik2');
$tax_query = array('relation' => 'OR');
foreach( $taxonomies as $taxonomy ) {
$tax_query[] = array(
'taxonomy' => $taxonomy,
'field' => 'name',
'terms' => esc_attr($qvars['s']),
);
}
*/
// taksonomiyle ilişkilendirilmiş ürünleri alalım
$ids = get_posts( array(
'posts_per_page' => -1,
'post_type' => 'product',
'post_status' => 'publish',
'fields' => 'ids',
'tax_query' => array( array(
'taxonomy' => $taxonomy,
'field' => 'name',
'terms' => esc_attr($qvars['s']),
)),
));
if ( count( $ids ) > 0 ) {
$search = str_replace( 'AND (((', "AND ((({$wpdb->posts}.ID IN (" . implode( ',', $ids ) . ")) OR (", $search);
}
return $search;
}