「プロフィールページを全部の投稿のページ下部に表示したい!」のように、あるページ(固定ページ・投稿ページ問わず)を他のページ(こちらも固定ページ・投稿ページ問わず)に表示させたい場合、表示したいページのスラッグを使って実現することができます!
方法
使用単語
方法の説明に、分かりやすく以下の単語を使用することとします。
ページA:別のページに表示されるページ。固定ページ・投稿ページどちらでも可。
ページB:ページAを表示するページ。固定ページ・投稿ページどちらでも可。
また、これからご紹介する実現方法はショートコードを使って別ページの表示を可能とします。
1:メソッドを用意
以下のコードをfunctions.php
最下部に追加します。「別のページを表示する」という機能を追加しています。
// [page_scode slug='表示させたいスラッグ名']
// 上記short codeで別固定ページをincludeできるはず。
function page_content_include($atts) {
extract(shortcode_atts(array(
'slug' => 'default'
), $atts, 'page_scode'));
ob_start();
$page_info = get_page_by_path( $slug );
$page = get_post($page_info);
ob_end_clean();
return do_shortcode( $page->post_content );
}
add_shortcode('page_scode', 'page_content_include');
// [page_scode slug='表示させたいスラッグ名']
// 上記short codeで別投稿をincludeできるはず。
//
function post_content_include($atts) {
extract(shortcode_atts(array(
'slug' => 'default'
), $atts, 'post_scode'));
ob_start();
$page_info = get_page_by_path( $slug, OBJECT, 'post');
$page = get_post($page_info);
ob_end_clean();
return do_shortcode( $page->post_content );
}
add_shortcode('post_scode', 'post_content_include');
上のメソッド(page_content_include)が固定ページを別の固定ページに表示させるメソッド、下のメソッド(post_content_include)が投稿ページを別の投稿ページに表示させるメソッドです。
このメソッド内にはページAのスラッグもページBのスラッグも出てきません。
2:ページBの編集画面でページAを表示するようショートコードを入れる
上のコードを追加したら、希望の固定ページ・投稿ページの編集画面で
ページAが固定ページなら
ページAが投稿ページなら
を記載することでページBにページAが表示されるようになります!
例えばこんな感じ
まずはメソッドをfunctions.phpに追加します。
次に、ページAを用意します。今回は投稿ページにしました。
そしてページBも用意します。こちらは固定ページにしました。
次に、ページBにページAを表示するよう編集画面を操作します。
まずは管理者の記事一覧画面からページAのスラッグを確認します。「ページa」ですね。
それではページBにページAを表示するように編集しましょう。
ショートコードを入れます。今回は以下のようになります。
「更新」をした後にページBの表示を確認すると、ページAが表示されるようになりました!
分かりやすいように赤枠をつけています。
参考
参考にした記事はこちら
WordPress関連の記事はこちら
コメント