エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


自サイト内のリンクをショートコードで指定する・アンカーリンク対応版

      2017/03/12

自サイト内のリンクをショートコードで指定する

 

ショートコードの自動リンクを作った経緯

 
本文中に関連記事として、自サイト内の投稿を指定することがたびたびあるわけですが、この設定が結構面倒なのです。ページのタイトルと URLをコピペして...
しかも、ページタイトルは時々見直しをするので、そうなるとリンク設定をしている記事を探して変更を...となるワケです。
 
そんなある日「これってショートコードで指定するようにすればいいんじゃね?」と思い至ったわけです。
検索してみると同じように考えた方は多いようで、相応の数がヒットしましたね。
 
なので、わざわざ自分で作るほどのものでもなかったわけですが、投稿の URLへのリンクだけではなく、投稿内のアンカーへのアンカーリンクも設定したいなぁと思うことがありまして、自分で作ってみることにしました。
 
 

自サイト内の自動リンクのソースコード

 
下記のソースコードを functions.phpに追記をします。
 
functions.phpについては「WordPressの functions.phpがある場所」で解説をしていますので参照してください。
 
 

 
 

自動リンクを指定するショートコード設定方法

 
投稿に編集をするショートコードは以下のようになります。

 
引数は、それぞれ以下の通りです。
リンク対象のページは、「id」と「slug」はどちらかで指定します。
両方を指定した場合は、slugが優先されます。
 
id
リンク対象を Post IDを指定します。デフォルトは「0」。
 
slug
リンク対象を slugで指定します。
ただし、正確にはページのパスを指定します。詳細は後述しています。
デフォルト値はなく、slugに入力がある場合は、idより優先的に処理を行います。
 
postpage
リンク対象の投稿タイプを指定します。
投稿は「post」、固定ページは「page」、カスタム投稿は「カスタム投稿の slug」を指定します。
デフォルト値は「post」。
 
anchorlink
アンカーリンクを設定する場合は、アンカーのテキストを指定します。
 
anchortext
アンカーリンクを設定するときにタイトルに追加するテキストを指定します。
20160207_01_wp
 
 

自動リンクを指定するショートコード設定の例

 
一番簡単な指定方法(リンク先を Post IDで指定する方法)

 
一番簡単な指定方法は、リンク先を Post IDで指定する方法です。
Post IDで指定する場合は、「id」の指定のみで OKです。
20160207_02_wp
 
 
リンク先を slugで指定する方法

 
リンク先を slugで指定する場合は、postpageも指定します。
 
 
アンカーリンクを指定する方法

 
アンカーリンクを指定してリンクを貼る場合は、anchorlinkと anchortextを指定します。
anchortextは、リンク先のページタイトルに追加するテキストです。上記のサンプルでは「/」で区切った後につなげる仕様になっています。
「/」を違うものに変えたい場合は、25行目を修正してください。
 
 
階層化されたページを指定する方法(固定ページ)

 
slugの項目で「正確にはページのパスを指定します」と書きました。
下記のように、親子関係がある固定ページの場合は、該当のページの「page-24」だけではなく、親のページも含めて「sample-page/page-24」と記述する必要があります。
idで Post IDを指定する場合は、該当ページの Post IDだけを指定します。
 
20160207_03_wp
 
 
「store」というカスタム投稿のページを指定する方法

 
リンク先がカスタム投稿の場合は、postpageにカスタム投稿タイプの slugを指定します。
また、前項と同じように、カスタム投稿タイプが階層化している場合は、slugの値には「store-8/store-10」を指定します。
 
 


 

自動リンクのソースコードの解説

 
最初にショートコードについての仕組みは「WordPress投稿にPHPを記述するショートコードの使い方add_shortcode」に記事を書いていますのでそちらを参考にしてください。
 
このサイト内のページを指定して、自動的にリンクを生成するショートコードは、
  15行目の get_page_by_path()関数
  17行目の get_post()関数
の 2つの関数でほぼすべてと言っていいでしょう。
 
いずれの関数も投稿(固定ページ含む)の情報を Object形式(もしくは配列)で取得できる関数です。
 
違いは、get_post()関数は「Post ID」を指定して取得し、get_page_by_path()関数は「slug(パス)」を指定して取得するという点です。
関数名でとどんな機能なのかが分かりやすくていいですね。
 
 

get_post()関数

 
「get_post()」関数は、IDを指定した IDに該当する投稿の情報を取得する関数です。
よく似た「get_posts()」関数がありますが、こちらは指定した条件に合致した投稿を取得するもので、取得レコードが複数件の場合もあるでしょう。
 
利用の方法は以下の通りです。

 
$id
取得したい投稿の IDを指定します。
初期値は「null」で現在の投稿が指定されている状態です。
 
$output
戻り値の型を指定します。
デフォルトは「object」で投稿オブジェクトで戻り値が出力されます。
その他、「array_a」で連想配列、「array_n」インデックス配列を指定することもできます。
 
$filter
文字列のサニタイズを指定します。
デフォルトは「raw」で数値フィールドの値のみがサニタイズされます。
 
 
詳しくは、下記のオフィシャルサイトを確認してください。
 
 get_post()関数
  https://wpdocs.osdn.jp/関数リファレンス/get_post
 
 get_posts()関数
  https://wpdocs.osdn.jp/テンプレートタグ/get_posts
 
 
WordPress 3.5までは、固定ページの情報は「get_page()」関数で取得していたようですが、3.5以降では「get_page()」関数は非推奨とされ、「get_post()」関数を使うことを求められています。
 
 

get_page_by_path()関数

 
「get_page_by_path()」関数は、関数名の通り、パス、もしくは、slugを指定してページの情報を取得する関数です。
ですが、固定ページだけではなく、投稿もカスタム投稿の情報も取得することができます。
 
 
利用の方法は以下の通りです。

 
$page_path
投稿ページの情報をパスで指定をします。
階層化されていない投稿の場合は、投稿の slugがそのままパスになります。
階層化されている場合は、下記の様に親の階層の slugも指定します。

 
また、下記の様に「パーマリンク設定」で下記の様に設定している場合、
20160207_04_wp
 
URLは下記の様になります。
 http://localhost/269.html
 
ですが、この場合のパスに指定するのは「269」になります(「.html」の部分は不要です)。
 
 
$output
戻り値の型を指定します。
get_post()関数と同じです。
 
$post_type
投稿タイプを指定します。
デフォルトは「page(固定ページ)」ですが、「post(投稿)」やカスタム投稿の slugを指定することもできます。
 
詳細は、オフィシャルサイトを参照してください。
 https://wpdocs.osdn.jp/関数リファレンス/get_page_by_path

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

AddQuicktagを使って WordPressの投稿を楽にする

投稿時にタグの入力を楽にしてくれるプラグイン「AddQuicktag」の使い方の説明です。クリック一つでタグを編集できます。

WordPress・Contact Form7、MW WP Form共通 細かなデザイン調整方法

お問い合わせフォームプラグインの Contact Form7、MW WP Formにおけるラジオボタン、チェックボックスなどの見た目を調整する小技を紹介。

Contact Form 7使い方詳細解説・WordPressメールフォーム

WordPressの標準お問い合わせメールフォームである Contact Form 7の詳細な使い方の解説です。

Category Order and Taxonomy Terms Orderでカテゴリ・タクソノミーのタームの順番を並び替える

標準機能では行えないカテゴリやタクソノミーの並び替えを行うプラグインCategory Order and Taxonomy Terms Orderの紹介です。

Custom Post Type UIでカスタムタクソノミーを設定し編集する方法解説

カスタムタクソノミーを追加、管理するプラグインCustom Post Type UIの使い方の解説。プラグインの解説ではあるものの、カスタムタクソノミーの仕様の解説でもある。

WordPressは危険?最新バージョンにアップデートして利用しよう

WordPress最新バージョン使ってますか?WordPressのバージョンアップをしないリスクを説明し、バージョンアップの手順、バックアップの重要性を解説しています。

WordPress データベースを管理するための強い味方のプラグイン WP-DBMANAGER

データベースを管理するための強い見方のプラグイン「WP-DBMANAGER」の使い方の説明です。

WordPressの一覧ページのテンプレートの種類とファイルの設定

ファイル名に従って一覧ページのテンプレートは選択される。ルールに従ってファイル名を付けることで任意のカテゴリ、タクソノミーごとのテンプレートを指定可能。

シンタックスハイライトの5システム比較のまとめ・WordPressでも使える

シンタックスハイライト5種の比較検討のまとめ記事。WordPressで使う目的だがプラグインの比較検討ではないのでどのサイトでも導入可能。

Rich ReviewsでWordPressに口コミサイトを簡単に構築する方法

口コミサイトに必要なレビュー投稿機能を提供するプラグインです。独自のフォームをショートコードで編集する自由度が高い設計で、平均点の表示も用意されています。