PSA: расширенные настраиваемые поля the_repeater_field повторяется слишком часто - PullRequest
0 голосов
/ 18 марта 2020

Это не вопрос, а ответ для тех, у кого такие же проблемы.

У меня была проблема с функцией the_repeater_field () из ACF. Раньше у меня была специальная запись с настраиваемым повторителем поля, где клиент мог указать некоторые даты для презентаций и т. Д. c.

Теперь он хотел иметь то же самое с различными службами, поэтому я создал несколько новых сообщений о дате для каждой службы. Внезапно все даты будут повторяться 3 раза.

Так что проблема была в то время как (has_posts ()); для моего пользовательского типа сообщения. По-видимому, он прошел через каждый пост этого пользовательского типа и затем вызвал функцию поля повторителя.

Вот неправильный код для справки: // заблаговременно получить пользовательские сообщения // забрать информацию о клиенте и заменить все заполнителем

if($getposts->have_posts())
{
     while(has_posts()){ //<--- this is wrong
        $getposts -> the_post();
        $theID = get_page_by_title( 'pagetitle', '', 'customposttype' );

        //$type is the type of date, could be online or in person

        if(get_field($type, $theID->ID)){
            while(the_repeater_field($type, $theID->ID)){

                $date = get_sub_field('date');
                $time = get_sub_field('time');
                $header = get_sub_field('header');
                $email = get_sub_field('email_text');


                if($today <= $date)
                {


                    $return .= "<a href='mailto:email@email.com?subject=".$header."&body=".$email."'>".$date." - ".$time. " Uhr </a></br>";
                }
            }
          } 
       }
}

Надеюсь, я смогу помочь кому-нибудь, кто может столкнуться с похожая проблема. Не могу найти что-нибудь в Интернете. Хотя это ошибка ладьи ie иметь это, пока я oop там. Не наносил вреда месяцами, потому что это было только для одной услуги.

1 Ответ

0 голосов
/ 18 марта 2020

Вот рабочий код:

if($getposts->have_posts())
  {
    $getposts -> the_post();
    $theID = get_page_by_title( 'pagetitle', '', 'customposttype' );

    //$type is the type of date, could be online or in person

    if(get_field($type, $theID->ID)){
        while(the_repeater_field($type, $theID->ID)){

            $date = get_sub_field('date');
            $time = get_sub_field('time');
            $header = get_sub_field('header');
            $email = get_sub_field('email_text');


            if($today <= $date)
            {


                $return .= "<a href='mailto:email@email.com?subject=".$header."&body=".$email."'>".$date." - ".$time. " Uhr </a></br>";
            }
        }
      } 
   }
...