Как get_template_part использовать AJAX?

Я в настоящее время находится в файле шаблона archive-product.php Woocommerce (например, страница магазина или страница категории товаров). При щелчке сообщения (или продукта) в заголовок той же страницы добавляется запрос GET, изменяя страницу на слайдер вместо списка сообщений. Мне нужно изменить содержимое страницы с помощью AJAX вместо обновления и добавления запроса GET. Я попытался включить часть шаблона, но он продолжает говорить, что сообщений не найдено.

Я продолжаю читать, что мне может потребоваться загрузить wp-load.php или какой-либо другой метод. Какой самый эффективный метод для этого? Я хочу узнать, как получить get_template_part (), чтобы вернуть мне, что он будет возвращать по определенному URL-адресу. (Мне нужно будет получить single-product.php позже, используя аналогичный метод).

Вот мой скрипт на стороне сервера для AJAX:

// AJAX function to show slider on product archive function cienna_show_slider_callback() { define('WP_USE_THEMES', false); require_once($_SERVER['DOCUMENT_ROOT'].'/wp/wp-load.php'); get_template_part( 'woocommerce/archive', 'product' ); wp_die(); } add_action( 'wp_ajax_cienna_show_slider', 'cienna_show_slider_callback' ); add_action( 'wp_ajax_nopriv_cienna_show_slider', 'cienna_show_slider_callback' ); 

Вот мой клиентский скрипт для AJAX (я не включаю дополнительную переменную GET, чтобы никого не путать, просто хочу, чтобы страница шаблона работала так же естественно, как если бы ее страница была посещена):

 // JavaScript to be fired on the product archive page $('ul.products li.product a').on('click', function(event) { // AJAX get content of page event.preventDefault(); $.get( ajax_object.ajax_url, { action: "cienna_show_slider" }, function( data ) { console.log(data); }) }); 

На всякий случай, если кто-нибудь спросит, вот шаблон архивного продукта:

 <?php get_template_part('templates/page', 'header'); /** * woocommerce_before_main_content hook * * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content) * @hooked woocommerce_breadcrumb - 20 */ do_action('woocommerce_before_main_content'); do_action( 'woocommerce_archive_description' ); if ( have_posts() ) { /** * woocommerce_before_shop_loop hook * * @hooked woocommerce_result_count - 20 * @hooked woocommerce_catalog_ordering - 30 */ do_action( 'woocommerce_before_shop_loop' ); woocommerce_product_loop_start(); woocommerce_product_subcategories(); while ( have_posts() ) { the_post(); get_template_part( 'woocommerce/content', 'product' ); } woocommerce_product_loop_end(); /** * woocommerce_after_shop_loop hook * * @hooked woocommerce_pagination - 10 */ do_action( 'woocommerce_after_shop_loop' ); } elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) { wc_get_template( 'loop/no-products-found.php' ); } /** * woocommerce_after_main_content hook * * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content) */ do_action('woocommerce_after_main_content'); ?> 

UPDATE: Итак, поскольку я обновил вызов AJAX от $ .ajax до $ .get и включил wp-load, он работает нормально, за исключением того, что он все еще продолжает говорить, что сообщений не найдено.

Solutions Collecting From Web of "Как get_template_part использовать AJAX?"