скажем, у меня есть следующий код, как я могу скрыть DIV, если функция пуста?
Точно так же, как я могу показать другой DIV, если функция пуста?
<div class='box12'>
<h1>text<h1/>
<p><?php echo name5(); ?><p/>
</div>
Вот моя функция для справки (она возвращает метаполе термина таксономии в wordpress):
function regular_tran() {
$terms = get_the_terms($post->ID, 'regularb');
$result = "";
if (is_array($terms) || is_object($terms)){
foreach ($terms as $term) {
$term_id = $term->term_id;
$result .= get_term_meta( $term_id, 'tran_65583', true );
}
}
return $result;
}
Это похоже на проблему X / Y. Вы можете опубликовать свой вопрос полностью?






Проверьте, возвращает ли функция что-то, а затем покажите div, если это так:
<?php
$name = name5();
if ($name) {
?>
<div class='box12'>
<h1>text</h1>
<p><?php echo htmlentities($name); ?></p>
</div>
<?php
}
?>
Я также очистил ваши конечные теги h1 и p. Вызов htmlentities включен, чтобы избежать проблем, когда кто-то может вставить теги HTML в свое имя и выполнить через них javascript и т. д.
Чтобы показать другой div сообщения, вы можете использовать else (или использовать !$name, если вы хотите показать только div, если результат оценивается как пустой):
<?php
$name = name5();
if ($name) {
?>
...
<?php
} else {
?>
<div>shown if empty</div>
<?php
}
?>
Спасибо. Нужно ли мне для этого превращать функцию в переменную $ или я могу обойтись без этого?
Если функция дешевая, т. Е. Не требует внешнего ресурса, такого как база данных и т. д., Вы можете вместо этого вызывать функцию несколько раз. В этом случае замените $name на вызов функции name5().
Я не совсем понимаю, что вы имеете в виду под внешним ресурсом. Я добавил свою функцию к исходному вопросу.
Это означает, что он попадает в базу данных, веб-службу и т. д. Определение вашей функции, похоже, указывает, что это плагин / тема wordpress, а функция _meta, по крайней мере, попадает в базу данных каждый раз, когда вы ее используете. Итак, нет, вы не хотите вызывать функцию более одного раза.
Хорошо понял. Спасибо! Вы рекомендуете для начала просто использовать переменную вместо функции? Если да, то как мне его закодировать?
Я попробовал ваш код, но он не сразу сработал. Чтобы заставить его работать, мне пришлось добавить следующее: if ($ name == "" && $ name == NULL) {....
Серверный код должен что-то выдавать для клиентского javascript-кода. Измените свой код:
<p><?php echo name5(); ?><p/>
что-то вроде:
<p>
<?php if (!name5()){ ?>
<script>
$(".box12").hide(); // asuming you are using jQuery
</script>
<?php } ?>
<p/>
здесь вам не нужен javascript. Пока блок заключен в php if, он не будет отображаться
@ Juakali92 Ну, это зависит от конкретного случая использования. Это просто элементарный пример того, как серверная сторона «разговаривает» со стороной клиента. Это полностью верно, хотя ответ MatsLindh более прямолинейный.
Оберните возвращенный результат функции оператором IF
<?php
$result = name5();
if ($result && $result !== '') { ?>
<div class='box12'>
<h1>text<h1/>
<p><?php echo $result ?><p/>
</div>
<?php } ?>
Вы можете попробовать эти методы.
1-
<div class = "box12">
<h1>text</h1>
<?php if (function_exists('name5')) { ?>
<p><?php echo name5(); ?></p>
<?php } ?>
</div>
2-
<div class = "box12">
<h1>text</h1>
<?php if (name5()) { ?>
<p><?php echo name5(); ?></p>
<?php } ?>
</div>
3-
<div class = "box12">
<h1>text</h1>
<?php $css = (name5()) ? "block":"none"; ?>
<p style = "display:<?=$css?>" >
<?php echo name5(); ?>
</p>
</div>
Почему поставили минус? Где я ошибся?
Добро пожаловать в SO. Я не проголосовал против вашего ответа, но вполне вероятно, что это потому, что вашему ответу не хватает объяснения. Ответы будут более полезными, если они будут конкретными. См. stackoverflow.com/help/how-to-answer.
Спасибо за информацию. Обращу внимание.
что такое пустая функция?