2011-01-03 3 views
0

У меня есть сайт, который использует настраиваемые поля, и я хочу либо показать содержимое для поля, если оно используется, и если поле не используется для сообщения то, конечно, не показывать содержимое полей.PHP If/Else для пользовательских полей Wordpress

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

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

Вот сообщение в вопросе: 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 } ?> 

ответ

-2

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

<?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

Как сказано в другом месте, пожалуйста, добавьте комментарии к своему вопросу или пересмотрите его, не задавайте дополнительных вопросов в качестве ответов! – EAMann

0

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

<?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)) 
1

Ваш блок кода немного сбивает с толку ... отчасти потому, что ваша логика не принимает во внимание то, что произошло бы, если пост имеет 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; ?> 

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

Смежные вопросы