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

Использование 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-запрос, и если да, то как?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

global $wpdb;

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

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

user14817151 26.12.2020 09:00

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

suii 26.12.2020 09:06

Или с помощью этого «SELECT * FROM wp_posts, где post_type = 'product' и post_title, например '%'.esc_attr( $_POST['search_keyword']).'%'"

suii 26.12.2020 09:08

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

suii 26.12.2020 09:25

Я сделаю это, как только проверю.

user14817151 26.12.2020 09:35

Я изменил его в соответствии с тем, что вы предложили в своем комментарии. Это новый аргумент: $post_search_query = $wpdb->get_results( "SELECT * FROM wp_posts where post_type = 'product' and post_title like '%'.esc_attr( $_POST['search_keyword'] ).'%'"); Затем я получаю эту ошибку: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) Если вы знаете, как это исправить, то я думаю, что все. Спасибо за ваше время.

user14817151 26.12.2020 09:47
"SELECT * FROM wp_posts where post_type = 'product' and post_title like '%'".esc_attr( $_POST['search_keyword'] )."'%'"
suii 26.12.2020 09:54

Это убрало ошибку, но поиск мертв. Ничего не появляется. Не уверен, почему.

user14817151 26.12.2020 09:57

Вам также нужно изменить цикл. Вы можете использовать обычный цикл for или foreach, чтобы отображать данные.

suii 26.12.2020 10:01

Ах хорошо. Будучи новичком во всем этом, я все еще учусь. Я знаю, что здесь есть правило, согласно которому «1 вопрос..», а что нет. Спасибо за ваше время. Я задам новый вопрос о цикле (если вы не хотите помочь).

user14817151 26.12.2020 10:03

Другие вопросы по теме