HEX
Server: Apache
System: Linux uws7-179.cafe24.com 3.10.0-1160.119.1p.el7.x86_64 #1 SMP Thu Sep 11 14:15:01 KST 2025 x86_64
User: medikors (1589)
PHP: 7.3.1p1
Disabled: mysql_pconnect
Upload Files
File: /medikors/www/wp-content/plugins/jupiterx-core/includes/woocommerce/woocommerce-load-more.php
<?php
/**
 * This file is responsible for Woocommerce Paginagion/Load More
 *
 * @package JupiterX_Core\Woocommerce
 *
 * @since 1.9.0
 */

/**
 * Add Load More Button.
 *
 * @since 1.9.0
 *
 * @SuppressWarnings(PHPMD.ElseExpression)
 *
 * @return void
 */
function jupiterx_add_load_more() {
	if ( class_exists( 'WC_Query' ) && method_exists( 'WC_Query', 'product_query' ) && function_exists( 'wc_get_loop_prop' ) ) {
		$total    = wc_get_loop_prop( 'total' );
		$per_page = wc_get_loop_prop( 'per_page' );
		$paged    = wc_get_loop_prop( 'current_page' );
		$first    = ( $per_page * $paged ) - $per_page + 1;
		$last     = min( $total, $per_page * $paged );

	} else {
		global $wp_query;
		$paged    = max( 1, $wp_query->get( 'paged' ) );
		$per_page = $wp_query->get( 'posts_per_page' );
		$total    = $wp_query->found_posts;
		$first    = ( $per_page * $paged ) - $per_page + 1;
		$last     = min( $total, $wp_query->get( 'posts_per_page' ) * $paged );
	}
	if ( $paged ) {
		echo '<div class="jupiterx-wc-loadmore-wrapper"><a class="button btn-info jupiterx-wc-load-more">' . esc_html__( 'Load More', 'jupiterx-core' ) . '</a></div>';
	}

}


/**
 * Add Load More Button and enqueue required script.
 *
 * @since 1.9.0
 *
 * @return void
 */
function jupiterx_wc_load_more() {

	global $wp_query;
	wp_register_script( 'jupiterx-wc-loadmore', plugins_url( 'wc-load-more.js', __FILE__ ), [ 'jquery' ], JUPITERX_VERSION, true );
	wp_localize_script( 'jupiterx-wc-loadmore', 'jupiterx_wc_loadmore_params', [
		'ajaxurl'              => admin_url( 'admin-ajax.php' ),
		'action'               => 'jupiterx_loadmore_ajax_handler',
		'posts'                => wp_json_encode( $wp_query->query_vars ),
		'current_page'         => get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1,
		'security'             => wp_create_nonce( 'jupiterx_core_woo_load_more' ),
		'max_page'             => $wp_query->max_num_pages,
		'i18n'                 => [
			'btn_text'         => __( 'Load More', 'jupiterx-core' ),
			'btn_text_loading' => __( 'Loading', 'jupiterx-core' ),
		],
	] );

	wp_enqueue_script( 'jupiterx-wc-loadmore' );
}

/**
 * Add ajax handler for the Load More Button.
 *
 * @since 1.9.0
 *
 * @return void
 */
function jupiterx_wc_loadmore_ajax_handler() {

	$args                = json_decode( stripslashes( $_POST['query'] ), true ); // phpcs:ignore WordPress.Security
	$args['paged']       = $_POST['page'] + 1; // phpcs:ignore WordPress.Security
	$args['post_status'] = 'publish';

	if ( ! check_ajax_referer( 'jupiterx_core_woo_load_more', 'security' ) ) {
		wp_send_json_error( [ 'message' => __( 'Nonce can\'t be verified', 'jupiterx-core' ) ] );
		wp_die();
	}

	query_posts( $args ); // phpcs:ignore WordPress.WP.DiscouragedFunctions.query_posts_query_posts

	woocommerce_product_loop_start();
	while ( have_posts() ) :
		the_post();
		wc_get_template_part( 'content', 'product' );
	endwhile;
	woocommerce_product_loop_end();
	woocommerce_reset_loop();

	die;
}

add_action( 'wp_ajax_jupiterx_loadmore_ajax_handler', 'jupiterx_wc_loadmore_ajax_handler' );
add_action( 'wp_ajax_nopriv_jupiterx_loadmore_ajax_handler', 'jupiterx_wc_loadmore_ajax_handler' );