Woocommerce Admin Поиск продукта не работает - PullRequest
1 голос
/ 27 апреля 2019

Я столкнулся с проблемой, что поиск продуктов woocommerce в админке не работает и выдает результат как No product found, хотя в моем поиске есть много продуктов.

Также я не использовал плагин relevancy searchтак что проблем не будет.

Я установил debug true в wp-congig.php и выдает одну ошибку, связанную с wp_meta при печати всего запроса.

Также попытался отключить тему и попробовать с темой по умолчаниютакже пытался отключить каждый плагин один за другим, но все равно не повезло.

1 Ответ

0 голосов
/ 29 апреля 2019

Я испытал то же самое, и добавление следующего блока кода в мой файл functions.php немедленно исправило это:

function m_request_query( $query_vars ) {
    global $typenow;
    global $wpdb;
    global $pagenow;

    if ( 'product' === $typenow && isset( $_GET['s'] ) && 'edit.php' === $pagenow ) {
        $search_term  = esc_sql( sanitize_text_field( $_GET['s'] ) );
    // Split the search term by comma.
        $search_terms = explode( ',', $search_term );
    // If there are more terms make sure we also search for the whole thing, maybe it's not a list of terms.
        if ( count( $search_terms ) > 1 ) {
            $search_terms[] = $search_term;
        }
    // Cleanup the array manually to avoid issues with quote escaping.
        array_walk( $search_terms, 'trim' );
        array_walk( $search_terms, 'esc_sql' );
        $meta_key               = '_sku';
        $post_types             = array( 'product', 'product_variation' );
        $query                  = "SELECT DISTINCT posts.ID as product_id, posts.post_parent as parent_id FROM {$wpdb->posts} posts LEFT JOIN {$wpdb->postmeta} AS postmeta ON posts.ID = postmeta.post_id WHERE postmeta.meta_key = '{$meta_key}' AND postmeta.meta_value IN  ('" . implode( "','", $search_terms ) . "') AND posts.post_type IN ('" . implode( "','", $post_types ) . "') ORDER BY posts.post_parent ASC, posts.post_title ASC";
        $search_results         = $wpdb->get_results( $query );
        $product_ids            = wp_parse_id_list( array_merge( wp_list_pluck( $search_results, 'product_id' ), wp_list_pluck( $search_results, 'parent_id' ) ) );
        $query_vars['post__in'] = array_merge( $product_ids, $query_vars['post__in'] );
    }

    return $query_vars;
}
add_filter( 'request', 'm_request_query', 20 );

Привет Мирциан для фрагмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...