WordPressをWEBサイトとして利用することは多々あると思います。
その際に設定するTipsを不定期で紹介したいと思います。
投稿をニュースとして利用するのはよく使われる手法です。
その際、お客様からよく下記のような要望を聞きます。
- 固定ページの情報を更新してその告知をニュースに掲載する際、直接更新したページにリンクさせたい。
- TOPのニュースリンクからPDFに直接リンクさせたい。
- ニュースからFacebookをはじめとした外部のサイトに直接リンクさせたい。
プラグインを使って実装することもできますが、カスタムフィールドを使っても実装可能です。
実装方法自体は他のサイトでもたくさん紹介していますので、
ここでは実装の際の意外な落とし穴について書いておきます。
カスタムフィールドを使った実装では大体下記のように対応します。
- 外部URLを記載するカスタムフィールドの名前を決める
例:external_url - テンプレートで、get_post_metaやpost_customなどを利用してカスタムフィールドを呼び出し、入力があればデフォルトのAタグと置き換える
関数リファレンス:get_post_meta
WordPress私的マニュアル:post_custom
基本的にはこれで設定可能ですが、
注意すべきなのは、投稿が利用されるのはTOPページのニュースやニュース一覧だけではないということです。
WordPressが標準で出力するRSS、フィードも投稿が配信されます。
RSS、フィードを利用する場合はこちらのリンクも調整する必要があります。
しかし、デフォルトでは、テーマ内にフィードのテンプレートは存在しません。
フォーマットを修正する場合は下記にあるインクルードファイルを直接修正する必要があります。
例 RSS2の場合:/wp-include/feed-rss2.php
WordPressのアップデートの影響を考えると、コアファイルに手を入れるのは得策ではありません。
インクルードファイルをテーマ内に持ってきて編集する方法もありますが、
今回はリンクを変更したいだけですので、WordPressが用意しているフックを利用します。
Code Reference:the_permalink_rss
the_permalink_rssというフィルターフックがあり、これを利用するとRSSに挿入する投稿リンクを編集することができます。
これを用い、外部URLが設定されている場合はそちらを挿入するように変更します。
//外部URLはカスタムフィールドexternal_url に記載 function external_the_permalink_rss($get_permalink){ global $post; $external_url = get_post_meta($post->ID,"external_url",true); if($external_url == '') $external_url = $get_permalink; return $external_url; } add_filter('the_permalink_rss', 'external_the_permalink_rss', 10, 2);
これで、RSS・フィードも外部URLが出力されるようになりました。
Webサイト構築やリニューアル、Webシステム構築に関してのご依頼・ご質問は弊社ホームページのお問い合わせフォームもしくは下記連絡先までお問い合わせ下さい。
株式会社ヴィンテージ Webシステム事業部
TEL:093-513-7255