Всем привет. Возникла такая необходимость, есть вот такой код:Код:Он отображается, даже если его нет) Как правильно прописать условие, что бы только если, к примеру: ID, 'one1' заполнен, то это:<ul> <li><a href="#one1" class="one1"><?php echo get_post_meta($post->ID, 'one1', true); ?></a></li> <li><a href="#one2" class="one2"><?php echo get_post_meta($post->ID, 'one2', true); ?></a></li> <li><a href="#one3" class="one3"><?php echo get_post_meta($post->ID, 'one3', true); ?></a></li> <li><a href="#one4" class="one4"><?php echo get_post_meta($post->ID, 'one4', true); ?></a></li> <li><a href="#one5" class="one5"><?php echo get_post_meta($post->ID, 'one5', true); ?></a></li> <li><a href="#one6" class="one6"><?php echo get_post_meta($post->ID, 'one6', true); ?></a></li> <li><a href="#one7" class="one7"><?php echo get_post_meta($post->ID, 'one7', true); ?></a></li> <li><a href="#one8" class="one8"><?php echo get_post_meta($post->ID, 'one8', true); ?></a></li> <li><a href="#one9" class="one9"><?php echo get_post_meta($post->ID, 'one9', true); ?></a></li> <li><a href="#one0" class="one0"><?php echo get_post_meta($post->ID, 'one0', true); ?></a></li> </ul>Код:Отображается.<li><a href="#one1" class="one1"><?php echo get_post_meta($post->ID, 'one1', true); ?></a></li>
- 30.12.2014 22:09
Качественный дизайн сайтов от 70$ - Профессиональный дизайн для Вас и Ваших клиентов! - 31.12.2014 15:15
- Регистрация: 08.06.2011
- Сообщений: 3,376
- Записей в дневнике: 1
- Репутация: 2506
Kiwikov,
Код:<?php $one1 = get_post_meta($post->ID, 'one1', true); if ($one1) {echo 'есть';} else {echo 'нет';} ?>
Разработка сайтов любой сложности!
Ультрабыстрые SSD VPS по смешным ценам(промокод VPS - дает скидку 25%)Спасибо сказали:
Kiwikov(31.12.2014), - 31.12.2014 19:32
Еще можно использовать сокращенный вариант
PHP код:То есть если get_post_meta($post->ID, 'one1', true) возвращает не пустое значение, то оно выводится, если пустое - просто элемент списка <li>...</li> не выводится совсем.<?php echo get_post_meta($post->ID, 'one1', true) ? '<li><a href="#one1" class="one1">' . get_post_meta($post->ID, 'one1', true) . '</a></li>' : '';?>
Спасибо сказали:
Kiwikov(31.12.2014), - 01.01.2015 21:00
- Регистрация: 29.11.2009
- Сообщений: 131
- Репутация: 32
OKyJIucT, если get_post_meta лезет в базу при каждом вызове, то ваш код в худшем случае может удвоить количество запросов в базу, что в общем случае может быть не очень хорошо.
- 01.01.2015 21:27
Весёлый химик, c вордпрессом не работал, потому понятия не имею, что происходит при вызове функции:) И на основании того, что есть, предложил свой вариант. Если не используется кеширование, то лучше совместить мой и вариант выше, чтобы количество запросов не увеличилось
- 02.01.2015 15:06
Kiwikov, последний аргумент функции get_post_meta в случае если поле post_meta пустое/несуществующее возвращает строку 'false', поэтому "Он отображается, даже если его нет". Можно прописать условие такого вида:
Код:Если полей много, вместо одинарных запросов можно возвратить массив всех полей см. функцию get_post_custom()if( ($pm = get_post_meta()) !=='false' ) echo '<li><a href="#one1" class="one1">'.$pm.'</a></li>';
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Как искать в интернете? или операторы расширенного поиска. | Дайджест блогосферы | 4 | 05.04.2012 17:12 |
Адалт конверт: другие операторы. | Адалт и дейтинг | 2 | 06.09.2009 13:45 |