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