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のタイムラインを取得してブログ内に表示させるコードは、こちらの記事を参考にしてみてください。

6.Facebookページのタイムラインを表示するコード

Facebookと連動できるようにしておくと、ブログとFacebookの両方を更新する手間が省けるので楽だと思います。