#php #ajax #wordpress #pagination #woocommerce
#php #ajax #wordpress #разбивка на страницы #woocommerce
Вопрос:
Я пытаюсь вставить цикл post (материал wp_query) во вкладку отдельного продукта woocommerce. Идея состоит в том, чтобы показывать сообщения, связанные с продуктом, с разбиением на страницы. Однако постоянная ссылка на продукт не изменяется.
Выполнение всех работ в function.php . Сначала я добавляю вкладку.
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
if (get_post_meta(get_the_ID(), '_crowdfundingcheckboxvalue', true) == 'yes') {
$tabs['test_tab'] = array(
'title' => __( 'New tab', 'woocommerce' ),
'priority' => 50,
'callback' => 'woo_new_product_tab_content'
);
};
return $tabs;
}
Эта часть в порядке, добавлена новая вкладка. Затем функция пользовательской разбивки на страницы.
function custom_pagination($numpages = '', $pagerange = '', $paged='') {
if (empty($pagerange)) {
$pagerange = 2;
}
global $paged;
if (empty($paged)) {
$paged = 1;
}
if ($numpages == '') {
global $wp_query;
$numpages = $wp_query->max_num_pages;
if(!$numpages) {
$numpages = 1;
}
}
$pagination_args = array(
'base' => get_pagenum_link(1) . '%_%',
'format' => 'page/%#%',
'total' => $numpages,
'current' => $paged,
'show_all' => False,
'end_size' => 1,
'mid_size' => $pagerange,
'prev_next' => True,
'prev_text' => __('amp;laquo;'),
'next_text' => __('amp;raquo;'),
'type' => 'plain',
'add_args' => false,
'add_fragment' => ''
);
$paginate_links = paginate_links($pagination_args);
if ($paginate_links) {
echo "<nav class='custom-pagination'>";
echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $numpages . "</span> ";
echo $paginate_links;
echo "</nav>";
}
}
Все выполнено без конфликта. Получив текущий идентификатор продукта и выполнив цикл, найдите для отображения соответствующие записи.
function woo_new_product_tab_content() {
// The new tab content
echo'<div class="inner">';
echo '<h2>New tab</h2>';
$paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
$id = get_the_ID();
$custom_args = array(
'post_type' => 'fundupdate',
'posts_per_page' => 2,
'post_status' => 'publish',
'meta_query' => array (
array (
'key' => 'campaign_id',
'value' => $id
)
),
'paged' => $paged,
'page' => $paged
);
$custom_query = new WP_Query( $custom_args );
if ( $custom_query->have_posts() ) :
while ( $custom_query->have_posts() ) : $custom_query->the_post();
the_title();
endwhile;
if (function_exists(custom_pagination)) {
custom_pagination($custom_query->max_num_pages,"",$paged);
}
wp_reset_postdata();
else:
echo 'Sorry, no posts matched your criteria';
endif;
echo'</div>';
}
Здесь все хорошо, но есть фатальная проблема: кажется, что единственный продукт не разрешает, чтобы его постоянная ссылка содержала параметр разбивки на страницы.
Все перенаправляют обратно на исходную ссылку (например www.example.com/store/product ) хотя навигация по странице имеет свой собственный параметр разбивки на страницы (например www.example.com/store/product/page/2 ). Просто спрашиваю, можно ли это решить с помощью php? Или использовать ajax, чтобы избежать проблемы?