ここ2ヶ月WEB制作の方が忙しく、なかなか観劇ができていませんでしたが、その間にWordPressでの小技を色々と習得したので、自分の覚書もかねてご紹介しようと思います。
今回は複数の階層になっているページで、直上の親ページへのリンクを設置するショートコードのご紹介です。
親ページへのリンク設置のショートコード
とりあえず本題です。
かなりコンパクトにシンプルにしたコードがこちらになります。
1 2 3 4 5 6 7 |
function parent_func() { global $post; $parent_url = get_page_link($post->post_parent); $parent_title = get_the_title($post->post_parent); return '<a href="'.$parent_url.'">'.$parent_title.'に戻る</a>'; } add_shortcode('parent_link', 'parent_func'); |
今回、簡単に繰り返し使う想定で、ショートコードとして作成していますので、直接テンプレートファイルや固定ページに書き込むのではなく、テーマフォルダにあるfunctions.phpにコードを追記しましょう。
あとは好きなところに[parent_link]
と書くだけで戻るリンクが設置されます。
ショートコードの作り方・使い方については後ほど別途記事を作成しようかと思います。
仕組みの解説
ここからは具体的な仕組みを解説していきます。
ショートコードの宣言
1 2 3 4 5 6 7 |
function parent_func() { global $post; $parent_url = get_page_link($post->post_parent); $parent_title = get_the_title($post->post_parent); return '<a href="'.$parent_url.'">'.$parent_title.'に戻る</a>'; } add_shortcode('parent_link', 'parent_func'); |
まずはショートコードである宣言です。
ポイントは7行目ですね。
第一引数であるparent_linkというショートコードが書かれたら、第二引数であるparent_funcという処理を行う、というものです。
つまり、[parent_link]
というショートコードが書かれたら、1行目のparent_funcの処理(2行目から4行目)が行われる、といった感じです。
ここはどちらかというとショートコードの基本なので、今回は深くは解説しません。
$postのglobal宣言
1 2 3 4 5 6 7 |
function parent_func() { global $post; $parent_url = get_page_link($post->post_parent); $parent_title = get_the_title($post->post_parent); return '<a href="'.$parent_url.'">'.$parent_title.'に戻る</a>'; } add_shortcode('parent_link', 'parent_func'); |
これ、意外と見落としがちです。
というか私もうっかり見落としていてしばらく沼にハマりました笑
現在開いているページ情報が詰まっている$postをここでも使えるように宣言してあげます。
$postはグローバル変数なので、ちゃんと宣言して呼び出してあげないと未宣言でエラーを吐き出します。
親ページ情報の取得
1 2 3 4 5 6 7 |
function parent_func() { global $post; $parent_url = get_page_link($post->post_parent); $parent_title = get_the_title($post->post_parent); return '<a href="'.$parent_url.'">'.$parent_title.'に戻る</a>'; } add_shortcode('parent_link', 'parent_func'); |
今回のコードの肝になる部分です。
とはいえいたってシンプル。
$post->post_parent
この記述で$post(現在のページ)の親ページのIDを参照できます。
あとはget_page_linkやget_the_titleで親ページのURLやタイトルを取得するだけです。
複数回使う場合は、
1 2 3 |
$parent_id = $post->post_parent; $parent_url = get_page_link($parent_id); $parent_title = get_the_title($parent_id); |
このようにまとめてしまってもいいかもしれませんね。
ショートコードの出力
1 2 3 4 5 6 7 |
function parent_func() { global $post; $parent_url = get_page_link($post->post_parent); $parent_title = get_the_title($post->post_parent); return '<a href="'.$parent_url.'">'.$parent_title.'に戻る</a>'; } add_shortcode('parent_link', 'parent_func'); |
最後にショートコードで実際に出力されるhtmlの作成です。
returnの後に実際に吐き出したいhtmlを記述します。
今回の場合、[parent_link]のショートコードを書くと、実際には
<a href=”親ページのURL“>親ページのタイトルに戻る</a>
というhtmlが出力される、というわけです。