2011-01-03 10 views
0

カスタムフィールドを使用しているサイトがあり、そのフィールドが使用されている場合はそのフィールドの内容を表示し、そのフィールドが投稿ごとに使用されていない場合はもちろん、フィールドの内容は表示されません。PHP WordPressカスタムフィールドの場合/その他

投稿がカスタムフィールドを使用していないときに、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 } ?> 

答えて

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

をこれは、両方のカスタムフィールドをチェックして、どちらか一方が欠けている場合、それはマークアップをレンダリングスキップして「何も表示されません。」両方がある場合は、マークアップをレンダリングします。

関連する問題