TOPニュースのリンク先を自由に変更【WordPressをWEBサイト用CMSとして使う際のTips】

投稿者: | 2015年7月2日

WordPressをWEBサイトとして利用することは多々あると思います。
その際に設定するTipsを不定期で紹介したいと思います。

投稿をニュースとして利用するのはよく使われる手法です。
その際、お客様からよく下記のような要望を聞きます。

  • 固定ページの情報を更新してその告知をニュースに掲載する際、直接更新したページにリンクさせたい。
  • TOPのニュースリンクからPDFに直接リンクさせたい。
  • ニュースからFacebookをはじめとした外部のサイトに直接リンクさせたい。

プラグインを使って実装することもできますが、カスタムフィールドを使っても実装可能です。
実装方法自体は他のサイトでもたくさん紹介していますので、
ここでは実装の際の意外な落とし穴について書いておきます。

カスタムフィールドを使った実装では大体下記のように対応します。

  1. 外部URLを記載するカスタムフィールドの名前を決める
    例:external_url
  2. テンプレートで、get_post_metapost_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