Почему моя строковая переменная признана пустой?

#php #wordpress

Вопрос:

У меня есть ввод с помощью редактора тем PHP для WordPress, и я сохраняю его в некоторой переменной.

Я хочу отобразить (эхо) переменную, если она не является пустой переменной.

Если я не использую If, он будет работать нормально (это доказательство того, что переменная не пуста).

 <div class="role"><?php echo get_post_meta( get_the_ID(), 'hcf_single_role_1', true );?></div>
 

Но когда я хочу повторить единственную переменную со значением, это работает иначе

 <?php if(!empty($post_id['hcf_single_role_1'])) { ?> //if not empty
   <div class="name"><?php echo get_post_meta( get_the_ID(), 'hcf_single_role_1', true );?></div>
<?php } else { ?> //if empty
   Variable Empty
<?php } ?>
 

если я изменюсь на if(empty()) это, все будет работать иначе, моя переменная будет распознана как пустая переменная.

*редактировать: я тоже пытался if(!empty($_POST['hcf_single_role_1'])) , но это то же самое

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

1. в чем ценность $post_id['hcf_single_pic_1'] , когда возникает проблема ? Есть $post_id['hcf_single_pic_1'] и get_post_meta( get_the_ID(), 'hcf_single_role_1', true ) то же самое. Также, где $post_id установлен ?

2. @Bhanu извините, что я виноват, я редактирую вопрос, так и должно быть 'hcf_single_role_1' . На самом деле у меня также есть другие переменные, как 'hcf_single_pic_1' я писал ранее, все переменные являются строковыми, которые не являются пустыми. Но все это не работает.

3. У вас есть переменная с именем $post_id , которая выглядит как целое число, но вы рассматриваете ее как массив. Почему вы тоже смешиваете этот массив с вызовом get_post_meta ?

4. @ChrisHaas Я только что попробовал if(!empty(get_post_meta( get_the_ID(), 'hcf_single_role_1', true ))) , и это работает. Прошлой ночью я попробовал тот же метод, но он не сработал, может быть, просто мои усталые глаза. да, я путаюсь, потому что я действительно не понимаю. Просто редактируйте тему, созданную другими

Ответ №1:

Основываясь на комментарии @ChrisHaas, я попробовал этот метод, и он работает

 <?php if(!empty(get_post_meta( get_the_ID(), 'hcf_single_role_1', true ))) { ?> //if not empty
   <div class="name"><?php echo get_post_meta( get_the_ID(), 'hcf_single_role_1', true );?></div>
<?php } else { ?> //if empty
   Variable Empty
<?php } ?>
 

Метод до того, как я перепутал массив и строковые переменные.

Поэтому я убираю с помощью того же метода, который я get_post_meta() использовал в качестве условия if