WordPressで作った新着情報リストのリンク先にPDFを設定する方法
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を入れている場合は別リンクに、登録されていない場合は記事ページになどの活用もできるのではないでしょうか。
もっとクレバーな方法があれば是非教えてください!