確認不足でドタバタ下山です。
WordPressの案件でよく使うのでコピペで使えるように書いとく。
タイトルにもあるように「PDFをアップロードしてトップページの新着情報に直接リンクしたいんですよねー。でも普通の記事も書きたいんですよねー。」ってことが最近よくあるのでメモっておきます。
今回はWordPressのプラグイン「Custom Field Template」を使用します。
こう設定した場合
1 2 3 4 5 6 7 8 |
<?php $files = get_post_meta($post->ID, PDF, false); foreach($files as $file){ $file = wp_get_attachment_url($file); } ?> <a href="<?php echo $file; ?>" target="_blank">PDFファイルです</a> |
これでアップロードしたPDFにリンクを貼ることができます。
ただし今回は、投稿する記事が毎回PDFじゃなくて本文ありの記事も書くというのが前提。
やることは・・・
- PDFファイルがアップロードされているか
- PDFファイルがアップロードされていたら記事タイトルにPDFへのリンクを貼る
- そうでなかったら記事タイトルに通常通り記事へのリンクを貼る
こんな感じです。
ではPDFファイルがアップロードされてるかどうか、要するにカスタムフィールドで条件分岐をする方法が以下
1 2 3 4 5 |
<?php $css = get_post_meta($post->ID, 'PDF', true); if ($file) { ?> PDFファイルがアップロードされてる場合 <?php } else { ?> PDFファイルがアップロードされてない場合 <?php } ?> |
最初のコードと上のコードを合体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php if(have_posts()): while(have_posts()): the_post(); ?> <?php $files = get_post_meta($post->ID, PDF, false); foreach($files as $file){ $file = wp_get_attachment_url($file); } ?> <?php $css = get_post_meta($post->ID, 'PDF', true); if ($file) { ?> <a href="<?php echo $file; ?>" target="_blank"><?php the_title();?></a> <?php } else { ?> <a href="<?php the_permalink();?>"><?php the_title();?></a> <?php } ?> <?php endwhile; endif; ?> |
こんな感じです。
よし。これで次回からはココをコピペで済む。(と思った途端、使わなくなるのよね・・・)