Intereting Posts
Обновлять информацию о профиле пользователя из functions.php WooCommerce: изменение порядка отображения короткого описания продукта и цены Как выводить только содержимое сообщения Buddypress отправляет уведомление по электронной почте только в том случае, если пользователь не вошел в систему Страницы с сообщениями, отфильтрованными по категориям Уменьшите размер загрузки мобильного изображения (wordpress) Изменить wordpress Многоуровневый сайт по умолчанию с бокового идентификатора 1 на боковой идентификатор 2 Как отключить модули Jetpack, такие как статистика? как bbPress и buddypress добавляют свои собственные шаблоны страниц к шаблону страницы, выпадающему на экране редактирования страницы Вкладки ACF и Bootstrap для категорий сообщений Как вызвать индивидуальный пост? Как удалить раздел темы WordPress, который уже отключен Могу ли я использовать HTTP POST? Есть ли лучшая альтернатива? Как получить входные сообщения об ошибках в настраиваемом шаблоне Частично переведенная панель управления на одном из сетевых сайтов

Оператор IF в do_shortcode

Можно ли сделать оператор if в do_shortcode?

<?php echo do_shortcode("[table width='500'] " . if ( have_posts() ) : while ( have_posts() ) : the_post(); the_content(); endwhile; endif; . "[/table]"); ?> 

Это дает мне неожиданный T_IF.

EDIT: И без оператора IF он дает сообщение за пределами короткого кода.

Solutions Collecting From Web of "Оператор IF в do_shortcode"

Нет. echo do_shortcode() – вызов функции. Вы не можете передавать условный оператор в качестве аргумента функции . Что вам нужно сделать, так это передать возвращаемый результат вашего запроса в качестве аргумента функции;

 //assuming you have taken care of your query prior to this point if ( have_posts() ) : while ( have_posts() ) : the_post(); $content = get_the_content(); //store content in variable echo do_shortcode("[table width='500'] ". $content . "[/table]"); endwhile; endif; 

Заметка:

В приведенном выше примере, чтобы не допустить повторного get_the_content() вашего контента, вы должны вызвать get_the_content() который returns свое значение, а не the_content() которое сразу же the_content() эхо. Вот почему ваш контент появляется за пределами короткого кода при запуске без неправильного условного оператора, переданного в качестве аргумента.

Расширенный ответ:

В свете вашего дополнительного комментария и расширенного вопроса, чтобы проверить существование какой-то «вещи» или что какая-то «вещь» соответствует определенному условию, вы проведете тестирование вне вызова функции на свой короткий код так же, как мы сделали выше;

 //assuming you have taken care of your query prior to this point if ( have_posts() ) : while ( have_posts() ) : the_post(); $content = get_the_content(); //store content in variable $thing = get_post_meta( get_the_ID(), 'thing', true ); if ($thing === "yes") { //assuming you want to concatenate your content with an image $content = $content . '<br> <img src="path_to_image" />'; } echo do_shortcode("[table width='500'] ". $content . "[/table]"); endwhile; endif;