OnePressのコード研究ー2.トップページの構造
OnePressのトップページはどのような構造になっているのか、見ていきます。
トップページのテンプレートファイルは、onepress/template-frontpage.phpです。ヘッダを読み込んだ後に、各セクションのテンプレートを読み込んでいることが分かります。
foreach ( $sections as $section ){ /** * Load section if active * * @since 2.1.1 */ if ( Onepress_Config::is_section_active( $section ) ) { onepress_load_section( $section ); } }
onepress_load_section()という関数は、onepress/inc/template-tags.php内で次のように規定されています。
if ( ! function_exists( 'onepress_load_section' ) ) { /** * Load section * * @since 2.0.0 * @param $section_id */ function onepress_load_section( $section_id ) { (略) get_template_part( 'section-parts/section', $section_id ); (略) } }
if ( ! function_exists(‘onepress_load_section’))で始まっているので、子テーマ側で思いっきりいじれることが分かりますね(笑)。そこは今回は触らないこととして、get_template_part( ‘section-parts/section’, $section_id )に注目します。
OnePressのトップページの各セクションは、「get_template_part」で呼び出されていますから、同名のファイルが子テーマにあれば、そちらを優先してくれます。子テーマ側の同階層に同じ名前のテンプレートファイルを置いてやれば、自動的にそちらを読み込んでくれるようになります。
demo6では、親テーマ側のonepress-child/section-parts/section-news.phpをコピーして、子テーマ側にonepress-child/section-parts/section-news.phpというファイルを置き、その内容を全面的に書き換えて「おしらせ」というセクションにしています。内容は、自分のFacebookページの新着記事を5件表示するようにしてみました。
Facebookのタイムラインを取得してブログ内に表示させるコードは、こちらの記事を参考にしてみてください。
Facebookと連動できるようにしておくと、ブログとFacebookの両方を更新する手間が省けるので楽だと思います。