#wordpress #advanced-custom-fields
#wordpress #расширенные пользовательские поля
Вопрос:
Вот мой код, когда у меня нет инструкции if, страница загрузится должным образом, однако, как только я добавлю инструкцию if, она перейдет на страницу с ошибкой 500.
Да, я знаю, что мне не хватает оператора Vimeo if, однако на данный момент это не должно иметь значения.
<?php
$youtube = get_field('youtube1');
$vimeo = get_field('vimeo1');
if ($youtube) {
echo '<iframe width="420" height="315" src="https://www.youtube.com/embed/' . the_field('youtube1') . '"></iframe>'
}
?>
Редактировать: уточнение, когда я повторяю iframe без инструкции if, это работает. Однако, когда я пытаюсь сказать, если ($ youtube) echo iframe, он прерывается.
Я должен повторять переменную, а не the_field (‘youtube1’) вот мой обновленный код. Я все еще получаю ошибку 500.
<?php
$youtube = get_field('youtube1');
$vimeo = get_field('vimeo1');
if ($youtube) {
echo '<iframe width="420" height="315" src="https://www.youtube.com/embed/' . $youtube . '"></iframe>'
}
?>
точки с запятой важны в php … упс, вот обновленный код, однако, даже когда ACF пуст на странице, он по-прежнему воспроизводит видео iframe без идентификатора видео, так что это просто неработающее видео.
<?php
$youtube = get_field('youtube1');
$vimeo = get_field('vimeo1');
if ('' !== strval($youtube)) {
echo '<iframe width="420" height="315" src="https://www.youtube.com/embed/' . $youtube1 . '"></iframe>';
}
?>
редактировать редактировать: ложная тревога Я полагаю, что у меня что-то было в кэше. Приведенный выше код является правильным кодом и, похоже, работает.
Ответ №1:
Вы пытаетесь повторить что-то в своем echo-заявлении. Функция the_field()
повторяет значение поля. Вы должны либо использовать get_field()
, либо просто использовать $youtube
переменную.
Вот обновленный код:
<?php
$youtube = get_field('youtube1');
$vimeo = get_field('vimeo1');
if ('' !== strval($youtube)) {
echo '<iframe width="420" height="315" src="https://www.youtube.com/embed/' . $youtube . '"></iframe>';
}
?>
Комментарии:
1. На самом деле я хотел изменить его на $ youtube, однако это все еще выдает мне ошибку 500. Я обновлю свой приведенный выше код, чтобы отразить это изменение, потому что вы правы, это должно быть $ youtube, а не the_field (‘youtube1’)
2. Не могли бы вы предоставить трассировку стека и уверены ли вы, что ошибка 500 исходит из этого кода? Возможно, глупый вопрос, но активирован ли ACF?
3. Я не уверен, что такое трассировка стека… И да, ACF активирован, потому что я использую его во многих местах. Также ошибка 500 почти наверняка возникает из этого кода, потому что, как только я удаляю if ($ youtube) { }, но оставляю часть echo, она работает.
4. Что
$youtube
содержится после$youtube = get_field('youtube1')
? Не могли бы вы, пожалуйста, предоставить выводvar_dump($youtube)
?5. Вы повторяете
$youtube1
вместо$youtube
. youtube1 — это имя вашего поля ACF, тогда как переменная называется$youtube
.