#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. Я сделаю это, как только протестирую его.