Оператор IF php, отображающий содержимое, если другое пустое

#php #wordpress #if-statement

#php #wordpress #оператор if

Вопрос:

У меня есть несколько полей (WordPress), и иногда одно из них пусто. Я хочу отобразить содержимое ‘the_excerpt’, когда ‘short_description’ не заполнено.

вот с чем я пришел:

     if (empty(the_field('short_description'))) {
      the_excerpt();
    } else {
      the_field('short_description'); 
    }
  

К сожалению, он отображает как short_description, так и except после этого. Что здесь не так? Я что-то пропустил? Для меня код выглядит хорошо.

Комментарии:

1. Используйте get_the_field, the_field немедленно печатает результаты.

2. @TimSheehan ты имеешь в виду это? if (empty(the_field(‘short_description’))) { the_excerpt(); } else { get_the_field(‘short_description’); } он по-прежнему отображает оба:(

3. Нет, он означает, что при вызове the_field('short_description') он не возвращает значение, вместо этого вывод отправляется на страницу напрямую,

4. Используйте get_the_field при проверке вашего условия, используйте the_field, когда вы хотите распечатать результат непосредственно на странице.

Ответ №1:

Чтобы проверить, существует ли значение, сначала используйте get_field() функцию вместо the_field()

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

 <?php if( get_field('short_description') ): ?>
    <?php the_field('short_description'); ?>
<?php else: ?>
   <?php  the_excerpt(); ?>
<?php endif; ?>
  

Или вы можете использовать другой способ, например :

 $isValue = get_field( "short_description" );
if( $isValue ) {
  echo $isValue ;
} else {
  the_excerpt();
}
  

Комментарии:

1. спасибо, я использовал первое. Работает отлично! Высоко ценится

Ответ №2:

WooCommerce: показывать пользовательское краткое описание, когда оно пустое

 add_action( 'woocommerce_single_product_summary', 'bbloomer_echo_short_desc_if_empty', 
21 );

 function bbloomer_echo_short_desc_if_empty() {
   global $post;
   if ( empty ( $post->post_excerpt  ) ) {
      $post_excerpt = '<p class="default-short-desc">';
      $post_excerpt .= 'This is the default, global, short description.<br>It will 
         show if <b>no short description has been entered!</b>';
      $post_excerpt .= '</p>';
     echo $post_excerpt;
   }
 }
  

Это правильный