| @@ -507,23 +507,39 @@ | ||
| 507 | 507 | |
| 508 | 508 | if ( $pagination ) { |
| 509 | 509 | if ( Fns::product_filters_has_ajax( apply_filters( 'rtsb/builder/set/current/page/type', '' ) ) ) { |
| 510 | 510 | if ( $wp_query->max_num_pages > 1 ) { |
| 511 | - $this->add_attribute( | |
| 512 | - 'rtsb_load_more_btn_attr_' . $rand, | |
| 513 | - [ | |
| 514 | - 'data-paged' => '2', | |
| 515 | - 'data-max-page' => $wp_query->max_num_pages, | |
| 516 | - ] | |
| 517 | - ); | |
| 511 | + $posts_loading_type = ! empty( $metas['posts_loading_type'] ) ? $metas['posts_loading_type'] : 'pagination'; | |
| 518 | 512 | |
| 519 | - $this->html .= | |
| 520 | - "<div class='rtsb-load-more rtsb-pos-r'> | |
| 521 | - <button {$this->get_attribute_string( 'rtsb_load_more_btn_attr_' . $rand )}> | |
| 522 | - <span>" . esc_html__( 'Load More', 'shopbuilder' ) . "</span> | |
| 523 | - </button> | |
| 524 | - <div class='rtsb-loadmore-loading rtsb-ball-clip-rotate'><div></div></div> | |
| 525 | - </div>"; | |
| 513 | + if ( 'pagination_ajax' === $posts_loading_type ) { | |
| 514 | + $this->html .= Fns::custom_pagination( $wp_query->max_num_pages, $posts_per_page, true ); | |
| 515 | + } elseif ( 'pagination' === $posts_loading_type ) { | |
| 516 | + $this->html .= Fns::custom_pagination( $wp_query->max_num_pages, $posts_per_page, false ); | |
| 517 | + } elseif ( 'load_on_scroll' === $posts_loading_type ) { | |
| 518 | + $this->html .= "<div class='rtsb-infinite-scroll' data-trigger='1' data-paged='2' data-max-page='{$wp_query->max_num_pages}'> | |
| 519 | + <div class='rtsb-infinite-action'> | |
| 520 | + <div class='rtsb-loadmore-loading rtsb-ball-clip-rotate'><div></div></div> | |
| 521 | + </div> | |
| 522 | + </div>"; | |
| 523 | + } else { | |
| 524 | + $load_more_text = ! empty( $metas['load_more_text'] ) ? $metas['load_more_text'] : esc_html__( 'Load More', 'shopbuilder' ); | |
| 525 | + | |
| 526 | + $this->add_attribute( | |
| 527 | + 'rtsb_load_more_btn_attr_' . $rand, | |
| 528 | + [ | |
| 529 | + 'data-paged' => '2', | |
| 530 | + 'data-max-page' => $wp_query->max_num_pages, | |
| 531 | + ] | |
| 532 | + ); | |
| 533 | + | |
| 534 | + $this->html .= | |
| 535 | + "<div class='rtsb-load-more rtsb-pos-r'> | |
| 536 | + <button {$this->get_attribute_string( 'rtsb_load_more_btn_attr_' . $rand )}> | |
| 537 | + <span>" . esc_html( $load_more_text ) . "</span> | |
| 538 | + </button> | |
| 539 | + <div class='rtsb-loadmore-loading rtsb-ball-clip-rotate'><div></div></div> | |
| 540 | + </div>"; | |
| 541 | + } | |
| 526 | 542 | } |
| 527 | 543 | } else { |
| 528 | 544 | $pagination_args = [ |
| 529 | 545 | 'query' => $wp_query, |
| @@ -1278,8 +1294,17 @@ | ||
| 1278 | 1294 | 'ajax' => $ajax, |
| 1279 | 1295 | ]; |
| 1280 | 1296 | |
| 1281 | 1297 | if ( 'pagination' === $meta['posts_loading_type'] ) { |
| 1298 | + if ( $is_grid ) { | |
| 1299 | + $html_utility .= Fns::custom_pagination( | |
| 1300 | + $total_page, | |
| 1301 | + 'wc' === $query_type ? $per_page : $posts_per_page | |
| 1302 | + ); | |
| 1303 | + } | |
| 1304 | + } elseif ( 'pagination_ajax' === $meta['posts_loading_type'] && ! rtsb()->has_pro() ) { | |
| 1305 | + // Free version fallback: render non-AJAX number pagination so filter | |
| 1306 | + // params in the URL are preserved via get_pagenum_link(). | |
| 1282 | 1307 | if ( $is_grid ) { |
| 1283 | 1308 | $html_utility .= Fns::custom_pagination( |
| 1284 | 1309 | $total_page, |
| 1285 | 1310 | 'wc' === $query_type ? $per_page : $posts_per_page |