Create Custom Menu in WordPress Dashboard
Complete tutorial on create custom menu in wordpress dashboard. Discover practical examples, implementation tips, and expert advice for WordPress and WooCo
Read More →
Looking to improve your product pages? Here’s how to add a "Load More Related Products" button using AJAX in WooCommerce without page reloads.
Step 1: Write JavaScript
Create custom-ajax-related-products.js with this jQuery code snippet:
(function ($) {
$(document).on('click', '#load-more-related-products', function (e) {
e.preventDefault();
var btn = $(this);
var page = btn.data('page');
$.post(wc_add_to_cart_params.ajax_url, {
action: 'custom_load_more_related_products',
product_id: btn.data('product-id'),
page: page,
}, function (response) {
if (response) {
$('#related-products').append(response);
btn.data('page', page + 1);
if ($.trim(response) === '') btn.remove();
}
});
});
})(jQuery);
Step 2: Register Script
Enqueue it in your theme or plugin:
function add_ajax_script_for_related_products() {
if (is_product()) {
global $product;
wp_enqueue_script('custom-ajax-related-products', get_stylesheet_directory_uri() . '/custom-ajax-related-products.js', ['jquery'], null, true);
wp_localize_script('custom-ajax-related-products', 'custom_ajax_related_products', [
'ajax_url' => admin_url('admin-ajax.php'),
'product_id' => $product->get_id(),
'page' => 2,
]);
}
}
add_action('wp_enqueue_scripts', 'add_ajax_script_for_related_products');
Step 3: Handle AJAX Call
Add this to your functions.php:
function load_more_related_products_ajax() {
$product_id = intval($_POST['product_id']);
$page = intval($_POST['page']);
$related = new WP_Query([
'post_type' => 'product',
'posts_per_page' => 4,
'post__not_in' => [$product_id],
'orderby' => 'rand',
'post_status' => 'publish',
]);
if ($related->have_posts()) {
ob_start();
while ($related->have_posts()) {
$related->the_post();
wc_get_template_part('content', 'product');
}
wp_reset_postdata();
echo ob_get_clean();
}
wp_die();
}
add_action('wp_ajax_custom_load_more_related_products', 'load_more_related_products_ajax');
add_action('wp_ajax_nopriv_custom_load_more_related_products', 'load_more_related_products_ajax');
Step 4: Add Container to Template
Place this markup in single-product.php:
<div id="related-products">
<?php wc_get_template('single-product/related.php'); ?>
</div>
Step 5: Test on Frontend
After saving all files, open any product page and try loading more related products via the button. 
Search our archives or reach out to our team for solutions and expert advice.