Я создаю сайт с помощью PHP (Wordpress) и пытаюсь создать динамические вкладки, чтобы администраторы могли создавать свои собственные вкладки с пользовательским содержимым.
Я использую поле Repeater из Advanced CustomFields Pro для создания пользовательского интерфейса для создания вкладок.
Моя проблема в том,Содержимое, которое будет во вкладках, будет слишком большим, чтобы просто использовать CSS для скрытия или показа, поэтому мне нужно будет извлечь содержимое вкладки с помощью AJAX.
Это код, который у меня есть на данный момент:
// The tabs buttons
if( have_rows('tabs') ):
echo '<ul class="list horizontal tabs-btns">';
$tab_no = 0;
while ( have_rows('tabs') ) : the_row();
$tab_no++;
$tab = get_sub_field('tab');
echo '<li><button class="btn big discrete';
if ( $tab_no == 1 ):
echo ' active';
endif;
echo '" data-tab="'.$tab_no.'">';
echo $tab;
echo '</button></li>';
endwhile;
echo '</ul>';
endif;
// The tabs content
if( have_rows('tabs') ):
echo '<div class="tabs-content">';
$tab_no = 0;
while ( have_rows('tabs') ) : the_row();
$tab_no++;
if ( $tab_no == 1 ):
// Prints the content of the first tab by default
include(get_template_directory() . '/inc/tab-content.php');
else;
// The other tabs i want to create some kind of function for which i can fetch with AJAX
// Something like:
// define ('tab-content-'.$tab_no):
// include(get_template_directory() . '/inc/tab-content.php');
endif;
endwhile;
echo '</div>';
endif;
Таким образом, по умолчанию отображаются все кнопки вкладок и только содержимое первой вкладки, первого дочернего элемента цикла while.
Я хочу спросить;Есть ли способ в PHP определить других потомков цикла while, чтобы я мог получить его с помощью AJAX?
Примерно так:
$('.tabs-btns button').each(function() {
$(this).click(function(){
var tabNo = $(this).data("tab");
var tabContent = $(this).parents('.tabs-btns').next('.tabs-content');
if ( !$(this).hasClass('active') ) {
tabContent.empty();
tabContent.load(tab-content- + tabNo); // So here i want to to fetch the data from the while loop in some way
}
$(this).parent('li').siblings('li').find('.active').removeClass('active');
$(this).addClass('active');
})
});
Возможно ли это вообще?Извините, если я плохо это объясняю.Я не знаю, как еще это объяснить.