Wordpress: добавление оператора if к одной странице поста игнорирует мой раздел, но отображает, что находится в разделе - PullRequest
0 голосов
/ 07 сентября 2018

Прошу прощения за размытое название.

У меня есть пользовательский тип записи под названием «сервис». single-service.php теперь всегда добавляет одну и ту же форму (сделанную в Contactform7) к каждой службе в хорошем разделе, который выглядит немного иначе, чем остальная часть страницы. Это прекрасно работает, но я хочу иметь возможность использовать разные формы для разных сервисов или иметь сервис без формы. Я добавил настраиваемое поле с ACF (service_booking) к типу сообщения службы, где вы можете поместить шорткод формы, которую вы хотите, или оставить пустым, если этой службе не нужна форма, поэтому я добавил оператор if в сделай это.

<div class="col-md-6  wow animated fadeInRight">
<?php
the_field('service_description');
?>


<?php $form = the_field('service_booking');
 if (!empty($form)) {
?>

<a href="#booking" class="btn btn-primary bookbutton">Book now</a>

  </div>
 </div> 
</div>
</section>

<section id="booknow">
 <div class="container"><div class="row">
  <div class="col-md-12">
   <div class="book" id="booking">
    <div class="row">
     <div class="col-12 wow animated fadeInUp text-center">
      <h2>Booking</h2>
     <hr></div>
    </div>
    <?php the_field('service_booking');?>
   </div>
  </div>
 </div>
</div>
</section>

<?php }
else{ ?>
    </div>
   </div>   
  </div>
 </section>
<?php };

Поэтому я хочу скрыть кнопку, которая ведет вас к форме, когда формы нет, и просто закрыть первый раздел вместо добавления нового раздела. Я пропустил код, который был до этого, потому что он не был актуален.

Все отлично работает, когда формы нет, но когда есть форма, кнопка, которая переходит в форму, не появляется, h2 формы не появляется, и форма помещается в первый раздел, это как-то полностью игнорирует второй раздел. Когда я убираю оператор if, эти вещи снова становятся видимыми, так что мой CSS действительно работает.

Что я делаю не так?

Я пробовал разные формы, но появляется одна и та же проблема. Вот случайная форма, которую я использовал для проверки:

<label> Je naam (verplicht)
[text* your-name] </label>

<label> Je e-mail (verplicht)
[email* your-email] </label>

<label> Onderwerp
[text your-subject] </label>

<label> Je bericht
[textarea your-message] </label>

[submit "Verzenden"] 

Вещи, которые приходят после моей формы, снова в порядке, нижний колонтитул отображается хорошо и т. Д.

Я надеюсь, что все ясно. Кто может помочь мне с этим вопросом?

1 Ответ

0 голосов
/ 07 сентября 2018

На основе документации ACF функция the_field отображает значение поля вместо его возврата, поэтому вы не можете присвоить его переменной. Вы должны использовать функцию get_field.

$form = get_field('service_booking');

Также вам следует дважды проверить элементы div, чтобы убедиться, что у вас нет лишнего или пропущенного тега закрытия, иначе ваш веб-сайт загружается неправильно из-за проблемы со структурой HTML.

...