Full post_... (ok)
https://wordpress.stackexchange.com/questions/339194/how-do-i-use-posts-distinct-correctly
function intercept_query_clauses($pieces) {
echo '<style>#post-clauses-dump { display: block; background-color: #777; color: #fff; white-space: pre-line; }</style>';
if (current_user_can('manage_options')) {
$dump = var_export($pieces, true);
echo "<pre id='post-clauses-dump'>{$dump}</pre>";
}
return $pieces;
}
add_filter('posts_clauses', 'intercept_query_clauses', 20, 1);
add_action('pre_get_posts', 'my_make_search_exact', 10);
function my_make_search_exact($query){
if(!is_admin() && $query->is_main_query() && $query->is_search) :
$query->set('exact', true);
endif;
}
function __adapted_search_function($search, $query) {
if(is_admin() || !$query->is_main_query() || !$query->is_search) return;
global $wpdb;
$search_term = $query->get('s');
$search = " AND (";
$search .= "($wpdb->posts.post_title LIKE '%$search_term%')";
$search .= " OR ";
$search .= "($wpdb->posts.post_excerpt LIKE '%$search_term%')";
$search .= " OR ";
$search .= "($wpdb->postmeta.meta_key = 'test' AND $wpdb->postmeta.meta_value LIKE '%$search_term%')";
$search .= ") ";
add_filter("posts_join",'__custom_join_tables');
add_filter( 'posts_groupby', 'my_posts_groupby' );
add_filter( 'posts_where' , 'posts_where' );
add_filter('posts_fields','custom_posts_fields');
add_filter('post_limits','custom_posts_limits');
add_filter('posts_distinct','custom_posts_distinct');
return $search;
}
function posts_where( $where ) {
global $wpdb;
$author = 1;
$where .= " OR ID IN (SELECT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = $author )";
return $where;
}
function __custom_join_tables($joins) {
global $wpdb;
$joins .= "JOIN $wpdb->postmeta ON ($wpdb->postmeta.post_ID = $wpdb->posts.ID)";
return $joins;
}
function my_posts_groupby($groupby) {
global $wpdb;
$groupby = " {$wpdb->posts}.ID ";
return $groupby;
}
function custom_posts_fields($fields) {
global $wpdb;
$fields = "{$wpdb->posts}.post_title, {$wpdb->posts}.post_content";
return $fields;
}
function custom_posts_limits($limits) {
global $wpdb;
$limits = "LIMIT 0, 2";
return $limits;
}
function custom_posts_distinct() {
return "DISTINCT";
}
add_action('posts_search', '__adapted_search_function',1,2);
Previousposts_groupby (ok)NextPhân tách các từ ra để tìm kiếm giống với tìm kiếm post_title, post_excerpt, post_content phần 1(ok)
Last updated
Was this helpful?