WordPressをCMSとして使う際に、記事ページを作るのではなく、PDFがある場合はPDFを表示したい!という要望があったので備考録程度にメモ。

カスタムフィールドと、WordPressの条件分岐を利用して、表示を切り替える方法です。

PDFのアップロード機能を追加

色々な方法があるとは思うのですが、今回はプラグイン「Custom Field Template」を利用して、カスタムフィールドで実装してみます。

Custom Field Templateは日本語で設定できるので、とっつきやすいと思います。

また、通常のカスタムフィールドだと、ファイルアップロード→ファイルURLを入力のような形で登録することになるので、それを簡略化できるのも魅力です。

できることなら標準のファイルアップのように、ドラッグ&ドロップでできればなお良いけど、多分この方法が一番初心者向きなのかなあ?とおもいます。

Custom Field Templateプラグインを追加→有効化

プラグインの検索で追加できます。

プラグインの設定

設定→カスタムフィールドテンプレート

テンプレートコンテンツに

 [pdf]
 label = PDFファイルアップロード
 type = file
 mediaLibrary = true
 

を追加。

これで、カスタムフィールド「PDF」に、アップロードしたPDFのURLが入るようになりました。

カスタムフィールドテンプレートのPDFという項目の「参照」からアップロードできます。

 テーマファイルの条件分岐でPDFがあるかないかを判定して表示を変える

通常は記事で更新したいので、記事として書かれている項目はそのまま通常通り表示。

PDFをアップロードして直接リンクを貼りたい項目についてはPDFへのリンクを行うようにします。

表示の切り替えはテーマの中の、新着情報一覧部分の書き換えで対応します。


<?php $pdf= get_post_meta($post->ID, 'pdf', true); ?>
 <?php if ($pdf != null){ ?>
 <a href="<?php echo wp_get_attachment_url(post_custom('pdf'),'originalImage'); ?>">PDFを見る</a>
 <?php } else { ?>
 <a href="<?php the_permalink(); ?>">詳細を見る</a>
 <?php } ?>
 </tr>
 <?php endforeach; ?>

「PDFを見る」「詳細を見る」のどちらかに分岐する例です。

もし、カスタムフィールド「PDF」が空白でなかった場合、PDFを表示するリンクを表示。そうでなければ通常のパーマリンクで表示という例です。

新着情報枠の体裁にあわせ、適宜書き換えれば動作します。

応用すれば、カスタムフィールドにURLを入れている場合は別リンクに、登録されていない場合は記事ページになどの活用もできるのではないでしょうか。

もっとクレバーな方法があれば是非教えてください!