Intereting Posts
Применить переписать SSL на подстраницы? рекомендуется ли использовать фреймворк MVC в WordPress? Есть ли способ вытащить первое изображение в цикле, а не все другие изображения? Выпадающая фильтрация чрезвычайно медленная Альтернатива почтового формата? Установить категорию привязки из имени файла при загрузке Как отображать изображения в виде категории? Я хочу получить продукт attirbute в разделе ниже проблема с основным сайтом (корневой домен) перенаправляется на субдомен (многоузловой) Как расширить тег и категорию «Связанные сообщения» в пользовательский post_type, если первые 2 условия не имеют сообщений Внесите обновление статуса сообщения в виде анонса WordPress удаляет строки mysql со строкой WP REST API V2 – Получить дополнительную страницу с полным пулем (URL / Path) Добавить категорию в переменный продукт Как разрешить предупреждение: Отсутствует аргумент 2 для ufwp_widget_text ()

Оператор 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;