Условные операторы

(Ответов: 5, Просмотров: 393)
  1. Дизайнер года Аватар для Kiwikov
    • Регистрация: 17.12.2012
    • Сообщений: 1,400
    • Репутация: 741
    • Webmoney BL: ?
    Всем привет. Возникла такая необходимость, есть вот такой код:
    Код:
    <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>
    Он отображается, даже если его нет) Как правильно прописать условие, что бы только если, к примеру: ID, 'one1' заполнен, то это:
    Код:
        <li><a href="#one1" class="one1"><?php echo get_post_meta($post->ID, 'one1', true); ?></a></li>
    Отображается.
    Качественный дизайн сайтов от 70$ - Профессиональный дизайн для Вас и Ваших клиентов!
    • 0
  2. Разработка любых сайтов Аватар для ArhStrAngeR
    • Регистрация: 08.06.2011
    • Сообщений: 3,375
    • Записей в дневнике: 1
    • Репутация: 2505
    Kiwikov,
    Код:
    <?php
    $one1 = get_post_meta($post->ID, 'one1', true);
    if ($one1) {echo 'есть';}
    else {echo 'нет';}
    ?>
    • 1

    Спасибо сказали:

    Kiwikov(31.12.2014),
  3. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    Еще можно использовать сокращенный вариант

    PHP код:
    <?php echo get_post_meta($post->ID'one1'true) ? '<li><a href="#one1" class="one1">' get_post_meta($post->ID'one1'true) . '</a></li>' '';?>
    То есть если get_post_meta($post->ID, 'one1', true) возвращает не пустое значение, то оно выводится, если пустое - просто элемент списка <li>...</li> не выводится совсем.
    • 1

    Спасибо сказали:

    Kiwikov(31.12.2014),
  4. Дипломник
    • Регистрация: 29.11.2009
    • Сообщений: 131
    • Репутация: 32
    OKyJIucT, если get_post_meta лезет в базу при каждом вызове, то ваш код в худшем случае может удвоить количество запросов в базу, что в общем случае может быть не очень хорошо.
    • 0
  5. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    Весёлый химик, c вордпрессом не работал, потому понятия не имею, что происходит при вызове функции:) И на основании того, что есть, предложил свой вариант. Если не используется кеширование, то лучше совместить мой и вариант выше, чтобы количество запросов не увеличилось
    • 0
  6. Студент Аватар для Alibi
    • Регистрация: 12.06.2009
    • Сообщений: 32
    • Репутация: 7
    Kiwikov, последний аргумент функции get_post_meta в случае если поле post_meta пустое/несуществующее возвращает строку 'false', поэтому "Он отображается, даже если его нет". Можно прописать условие такого вида:
    Код:
    if( ($pm = get_post_meta()) !=='false' ) echo '<li><a href="#one1" class="one1">'.$pm.'</a></li>';
    Если полей много, вместо одинарных запросов можно возвратить массив всех полей см. функцию get_post_custom()
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Как искать в интернете? или операторы расширенного поиска.
Дайджест блогосферы 4 05.04.2012 17:12
Адалт конверт: другие операторы.
Адалт и дейтинг 2 06.09.2009 13:45

У кого попросить инвайт?

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

Информеры