WordPress

[解決?]テーマSydneyのLATEST NEWSの表示記事数を子テーマでカスタマイズ

WordPressのテーマSydneyのLatest Newsウィジェットのカスタマイズがうまくいかないので、つい最近まで子テーマではなく親テーマのLatest Newsウィジェットを書き換えて対応していましたが、テーマの更新の度に書き換えるのが面倒なので、再度試してみて、子テーマでウィジェットのLatest Newsをカスタマイズすることができました(と思ったのですが、微妙な結果です)。

おおまかな手順は、以前も記したSydneyのフォーラムで紹介されている1〜6です。https://forums.athemes.com/t/more-posts-shown-on-latest-news-widget/6633/2

ですが、現在のテーマのfunctions.phpには手順4に記されている、siteorigin_panels_activateという関数がありません。改めてfunctions.phpを見返してみたところ、137行目あたりからフロントページウィジェットをロードする箇所があり、if ( defined( ‘SITEORIGIN_PANELS_VERSION’ ) ) のコードに変更されているようでした。

手順1〜6を書き直すと以下。

  1. 子テーマを作る(sydney-child)
  2. 親テーマの widgets/fp-latest-news.php を複製して、子テーマ/widgetsディレクトリに配置する
  3. 子テーマの fp-latest-news.php を開いて改変したい箇所を修正する。
    例えば、1行に表示させる記事数を3→4にするのであれば、以下の2行
    1)修正前: 'posts_per_page' => 3,
    修正後: 'posts_per_page' => 4,
    2)修正前: <div class="blog-post col-md-4 col-sm-6 col-xs-12">
    修正後:<div class="blog-post col-md-3 col-sm-6 col-xs-12">
    例えば、6記事表示させたいのであれば、以下
    修正前:'posts_per_page' => 3,
    修正後:'posts_per_page' => 6,
  4. 子テーマの functions.php に以下を追加する(前者ではなく、後者)
if ( function_exists('siteorigin_panels_activate') ) {
 	require_once get_template_directory() . "-child/widgets/fp-latest-news.php";
}

if ( defined( 'SITEORIGIN_PANELS_VERSION' ) ) {
	require_once get_template_directory() . "-child/widgets/fp-latest-news.php";
} 
  1. 子テーマを有効にしてサイトを表示させると、Fatal Errorメッセージが表示されブランクページしか表示されません。(すでにft-latest-news.phpは定義されているというようなメッセージが表示された)
  2. 上記5を解決するために、親テーマのfunctions.phpを開き、Latest Newsウィジェットを読み込んでいる行をコメントアウトします。
    修正前:require_once get_template_directory()."/widgets/fp-latest-news.php";
    修正後:// require_once get_template_directory()."/widgets/fp-latest-news.php";

 

フォーラムの記載通りに改変できたわけですが、終わってみて、ふと気づきました。親テーマのfunctions.phpを変更しているので、親テーマを更新する度にコメントアウトがはずれるのでFatal Errorになってしまうわけですよねorz… であれば、親テーマのLatest Newsウィジェットのコードを変更した方がまだ影響が少なくてよいような気もしました。