[WordPress]トップページの新着情報にカスタムフィールドでアップロードしたPDFをリンクしたり記事をリンクしたりする

確認不足でドタバタ下山です。

WordPressの案件でよく使うのでコピペで使えるように書いとく。
タイトルにもあるように「PDFをアップロードしてトップページの新着情報に直接リンクしたいんですよねー。でも普通の記事も書きたいんですよねー。」ってことが最近よくあるのでメモっておきます。

今回はWordPressのプラグイン「Custom Field Template」を使用します。

例えば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じゃなくて本文ありの記事も書くというのが前提。
やることは・・・

  1. PDFファイルがアップロードされているか
  2. PDFファイルがアップロードされていたら記事タイトルにPDFへのリンクを貼る
  3. そうでなかったら記事タイトルに通常通り記事へのリンクを貼る

こんな感じです。

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

こんな感じです。

よし。これで次回からはココをコピペで済む。(と思った途端、使わなくなるのよね・・・)