Wordpress search.php meta key göre arattırma - R10.net
  • 11-09-2020, 13:50:12
    #1
    merhabalar wordpress de arama yaparken yazının başlığına göre arama yapıyor bu durumu hem yazı başlığı hemde yazıda bulunan bir meta key e göre nasıl yaptırabiliriz yani yazı başlığı Ankara diyelim yazıdada 'ilcekod' = "Kızılay" diye bi meta var diyelim aramaya kızılay yazıncada ankara konusu gelmeli

    SORUMUN CEVABINI BULDUM
    BİRİNİN İHTİYACI OLURSA;

    <?php
    function mv_meta_in_search_query( $pieces, $args ) {
    global $wpdb;
    
    if ( ! empty( $args->query['s'] ) ) { // only run on search query.
    $keywords = explode(' ', get_query_var('s'));
    $escaped_percent = $wpdb->placeholder_escape(); // WordPress escapes "%" since 4.8.3 so we can't use percent character directly.
    $query = "";
    
    foreach ($keywords as $word) {
    $query .= " (unique_postmeta_selector.meta_value LIKE '{$escaped_percent}{$word}{$escaped_percent}') OR ";
    }
    
    if ( ! empty( $query ) ) { // append necessary WHERE and JOIN options.
    $pieces['where'] = str_replace( "((({$wpdb->posts}.post_title LIKE '{$escaped_percent}", "( {$query} (({$wpdb->posts}.post_title LIKE '{$escaped_percent}", $pieces['where'] );
    $pieces['join'] = $pieces['join'] . " INNER JOIN {$wpdb->postmeta} AS unique_postmeta_selector ON ({$wpdb->posts}.ID = unique_postmeta_selector.post_id) ";
    }
    }
    
    return $pieces;
    }
    add_filter( 'posts_clauses', 'mv_meta_in_search_query', 20, 2 );
    ?>
    Onurcan