Загрузка содержимого из цикла PHP с помощью AJAX - PullRequest
0 голосов
/ 28 февраля 2019

Я создаю сайт с помощью 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');
    })
});

Возможно ли это вообще?Извините, если я плохо это объясняю.Я не знаю, как еще это объяснить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...