Измените posts_per_page на запрос MySQL для WooCommerce AJAX Live Search

#php #mysql #ajax #search #woocommerce

#php #mysql #ajax #Поиск #woocommerce

Вопрос:

Использование posts_per_page может быть не лучшим вариантом, и мне интересно, следует ли его изменить на запрос MySQL, чтобы он был быстрее и добавлял меньше нагрузки на сайт / сервер?

Это процесс построения живого поиска товаров для WooCommerce.

Это код:

 add_action( 'wp_ajax_data_fetch' , 'data_fetch' );
add_action( 'wp_ajax_nopriv_data_fetch', 'data_fetch' );
function data_fetch() {

    $post_search_query = new WP_Query( array( 'posts_per_page' => -1, 's' => esc_attr( $_POST['search_keyword'] ), 'post_type' => 'product' ) );

    if( $post_search_query->have_posts() ) :
        
        while( $post_search_query->have_posts() ): $post_search_query->the_post(); ?>
            
            <h5><a href="<?php echo esc_url( post_permalink() ); ?>"><?php the_title();?></a></h5>
            <span class="live-search-post-excerpt"><?php the_excerpt(); ?></span>

            <?php endwhile;
        wp_reset_postdata();
    endif;
    die();
}
 

Из-за чего мне интересно, есть ли способ изменить это:

 $post_search_query = new WP_Query( array( 'posts_per_page' => -1, 's' => esc_attr( $_POST['search_keyword'] ), 'post_type' => 'product' ) );
 

в SQL-запрос, и если да, то как?

Ответ №1:

Вы можете использовать wpdb.

 global $wpdb;

$data = $wpdb->get_results("SELECT * FROM table");
 

Комментарии:

1. Хорошо, приятно знать — спасибо. Есть какие-нибудь примеры того, как получить из этого все продукты?

2. Вы можете проверить таблицы базы данных, я думаю, что продукт в woo находится в таблице wp_posts с post_type = «product»

3. Или с помощью этого «ВЫБЕРИТЕ * ИЗ wp_posts, где post_type = ‘product’ и post_title, например ‘%’.esc_attr( $ _POST[‘search_keyword’] ).’%'»

4. Ваше приветствие, если этот ответ поможет вам, я буду более благодарен, если вы нажмете кнопку «Принять этот ответ» Добрый день ^ _ ^.

5. Я сделаю это, как только протестирую его.