PHP If / Else для пользовательских полей Wordpress - PullRequest
0 голосов
/ 03 января 2011

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

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

Любая помощь будет принята с благодарностью!

Вот этот пост: http://beta.ohsinsider.com/insider-top-stories/workers%E2%80%99-compensation-may-not-shield-you-from-lawsuits-by-injured-workers

Вот этот пост, показывающий, что поле, которое я вызываю в моем кодене используются (http://screencast.com/t/aBjt1drIw).

Я подтвердил, что при вводе значения для настраиваемого поля оно выводится в Посте.

Вот код, который я использую:

<?php
    $pdfurl = get_post_meta($post->ID, 'pdf', true);
    $wordurl = get_post_meta($post->ID, 'word', true);
    if( !empty($pdf) || !empty($word) ){
    ?>
    <?php /* show nothing then */ } else { ?>
    <div id="post_downloads_box">
        <h3 class="single_related_footer">Dfownload Now</h3>
        <div id="post_downloads_box_left">
            <a target="_blank" href="<?php echo get_post_meta($post->ID, 'pdf', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_pdf_icon.jpg" /></a>
        </div>
        <div id="post_downloads_box_right">
            <a target="_blank" href="<?php echo get_post_meta($post->ID, 'word', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_word_icon.jpg" /></a>
        </div>
    </div>
    <?php } ?>  

Ответы [ 3 ]

1 голос
/ 03 января 2011

Ваш блок кода немного сбивает с толку ... отчасти потому, что ваша логика не учитывает, что произойдет, если в публикации есть пользовательское поле PDF, а не пользовательское поле Word ... вы по-прежнему будете отображать оба набораразметки.Вместо этого я бы порекомендовал следующее:

<?php if( get_post_meta($post->ID, 'pdf', true) && get_post_meta($post->ID, 'word', true) ) : ?>

<div id="post_downloads_box">
    <h3 class="single_related_footer">Download Now</h3>
    <div id="post_downloads_box_left">
        <a target="_blank" href="<?php echo get_post_meta($post->ID, 'pdf', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_pdf_icon.jpg" /></a>
    </div>
    <div id="post_downloads_box_right">
        <a target="_blank" href="<?php echo get_post_meta($post->ID, 'word', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_word_icon.jpg" /></a>
    </div>
</div>

<?php endif; ?>

Это проверяет оба пользовательских поля и, если одно из них отсутствует, пропускает рендеринг разметки и «ничего не показывает».Если оба есть, это делает вашу разметку.

0 голосов
/ 03 января 2011

Кажется, это лучше:

<?php $values = get_post_custom_values("pdf"); if (isset($values[0])) {?>
    <div id="post_downloads_box">
        <h3 class="single_related_footer">Dfownload Now</h3>
        <div id="post_downloads_box_left">
            <a target="_blank" href="<?php echo get_post_meta($post->ID, 'pdf', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_pdf_icon.jpg" /></a>
        </div>
        <div id="post_downloads_box_right">
            <a target="_blank" href="<?php echo get_post_meta($post->ID, 'word', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_word_icon.jpg" /></a>
        </div>
    </div>
    <?php } else {} ?>
0 голосов
/ 03 января 2011

Инверсия логики первого утверждения была бы идеальным решением.

<?php
$pdfurl = get_post_meta($post->ID, 'pdf', true);
$wordurl = get_post_meta($post->ID, 'word', true);
if( empty($pdf) && empty($word) ) {
?>
    <div id="post_downloads_box">
        <h3 class="single_related_footer">Dfownload Now</h3>
        <div id="post_downloads_box_left">
            <a target="_blank" href="<?php echo get_post_meta($post->ID, 'pdf', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_pdf_icon.jpg" /></a>
        </div>
        <div id="post_downloads_box_right">
            <a target="_blank" href="<?php echo get_post_meta($post->ID, 'word', true); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post_word_icon.jpg" /></a>
        </div>
    </div>
<?php } ?>

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

if (!empty($pdf) || !empty($word))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...