ショートコードで別の固定ページの内容を表示させる方法

フロントページやカスタム投稿のアーカイブページなどで、クライアントが更新をする際にテンプレートファイルを更新することが出来ないなどの問題がある。

そのような時に、編集用の固定ページを用意してそこに入力された内容が更新されるという形にすると便利だし、不意にテーマファイルを編集してしまい元に戻せないなどのトラブルも防ぐことが出来る。

そのような事例に直面した際に使用した方法の 覚書メモ

別の固定ページ呼び出し方法【1】

テーマファイル内で別の固定ページの内容を呼び出すための方法。

function page_content_e( $page_path, $post_type = 'page' ) {
	$page = get_page_by_path( $page_path, OBJECT, $post_type );
	if ( $page && $page->post_status == 'publish' ) {
		echo apply_filters( 'the_content', $page->post_content );
	}
}

functions.phpへの記述


<?=page_content_e( '表示させたいページのスラッグ名' )?>

表示させたい場所への記述

 

別の固定ページ呼び出し方法【2】

固定ページのエディターでショートコードを記述して呼び出す方法

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');
  

functions.phpへの記述


 [page_scode slug='表示させたいスラッグ名']
 

呼び出したいページのエディター内へショートコードを記述