• Здравствуйте, хочу сделать чтобы поиск работал по произвольному полю. Нашел код, но с ним поиск начинает работать сразу по всем полям, нужно чтобы осуществлялся только по одному заданному полю. Возможно кто-то сталкивался с этим и есть готовое решение.
    Вот код который работает по всем полям

    function cf_search_join( $join ) {
    global $wpdb;
    
    if ( is_search() ) {
    $join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
    }
    
    return $join;
    }
    add_filter('posts_join', 'cf_search_join' );
    
    function cf_search_where( $where ) {
    global $pagenow, $wpdb;
    
    if ( is_search() ) {
    $where = preg_replace(
    "/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
    "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where );
    }
    
    return $where;
    }
    add_filter( 'posts_where', 'cf_search_where' );
    
    function cf_search_distinct( $where ) {
    global $wpdb;
    
    if ( is_search() ) {
    return "DISTINCT";
    }
    
    return $where;
    }
    add_filter( 'posts_distinct', 'cf_search_distinct' );
  • Тема «Поиск по произвольным полям» закрыта для новых ответов.