Simplicityで全ページに人気記事と新着記事を表示させる方法

miyamoです。

このブログでは、WordPressのテーマとしてSimplicityを利用しています。

ウィジェットを使って、サイドバーへ試着記事と人気記事を表示することができるのですが

  • Topページ:人気記事
  • 個別記事ページ:新着記事

となってしまいます。

これを、全てのページで、人気記事と新着記事を表示するようにカスタマイズしたので、その方法をお知らせします。

スポンサーリンク

 カスタマイズ前の表示を確認

カスタマイズする前は、Topページは人気記事、個別記事ページは新着記事となっています。

Topページの表示

20150405-1
Topページでは人気記事(人気エントリーに表示名を変更しています。)が表示されています。

個別記事ページの表示

20150405-2

個別記事ページでは、新着記事(新着エントリーに表示名を変更しています。)が表示されています。

カスタマイズ内容

Topページでも個別記事ページでも、人気記事と新着記事が同時に表示されるようにします。

カスタマイズ方法

 phpファイル編集画面の表示

ダッシュボードのメニューから、外観→テーマの編集を選択します。

今回は、Simplicityの親テーマ自体を編集します。子テーマを使っている方は、編集対象が子テーマになっています。

20150405-3

プルダウンを開いて、親テーマ(ここではSimplicity1.6.0)を選び、

20150405-4

選択ボタンを押します。

編集対象のwidget.phpを選択します

親テーマの編集に切り替わると、右側に編集対象のファイルが表示されます。この中から、widget.phpを選択して下さい。

widget.phpの修正箇所

    function widget($args, $instance) {
        extract( $args );
        $title_new = apply_filters( 'widget_title_new', $instance['title_new'] );
        $title_popular = apply_filters( 'widget_title_popular', $instance['title_popular'] );
        //表示数を取得
        $entry_count = apply_filters( 'widget_entry_count', $instance['entry_count'] );
        //表示タイプ
        $entry_type = apply_filters( 'widget_entry_type', $instance['entry_type'] );
        //固定ページを含める
        $is_pages_include = apply_filters( 'widget_is_pages_include', $instance['is_pages_include'] );
        $is_views_visible = apply_filters( 'widget_is_views_visible', $instance['is_views_visible'] );
        $range = apply_filters( 'range', $instance['range'] );
        $range_visible = apply_filters( 'range_visible', $instance['range_visible'] );
        $is_ranking_visible = apply_filters( 'is_ranking_visible', $instance['is_ranking_visible'] );
        //表示数をグローバル変数に格納
        //後で使用するテンプレートファイルへの受け渡し
        //表示数が設定されていない時は5にする
        global $g_entry_count;
        if ( !$entry_count ) $entry_count = 5;
        $g_entry_count = $entry_count;
        //表示タイプのデフォルト設定
        global $g_entry_type;
        if ( !$entry_type ) $entry_type ='default';
        $g_entry_type = $entry_type;
        //固定ページを含めるかのデフォルト設定
        global $g_is_pages_include;
        $g_is_pages_include = $is_pages_include;
        //ページビュー表示に格納
        global $g_is_views_visible;
        $g_is_views_visible = $is_views_visible;
        global $g_range;
        $g_range = ($range ? $range : 'all');
        global $g_widget_item;
        $g_widget_item = 'SimplicityWidgetItem';
    	?>
          <?php if ( is_home() ) { //トップリストの場合?>
            <div id="popular-entries" class="widget widget_new_popular">
              <h4><?php if ($title_popular) {
                echo $title_popular;
              } else {
                echo '人気記事';
              }
                ?></h4>
            <?php if ( $is_ranking_visible ) {//ランキングの表示
              echo get_popular_posts_ranking_style('.widget_new_popular');
            }  ?>
            <?php if (function_exists('wpp_get_mostpopular') && //Wordpress Popular Postsがインストールされているかどうか
                      is_wpp_enable()) { //Wordpress Popular Postsを?>
              <?php //PV順
              if ( $entry_type == 'default' ) {
                get_template_part('popular-posts-entries');//デフォルト
              } else {
                get_template_part('popular-posts-entries-large');//大きなサムネイル
              }?>
              <?php if ($range_visible) {
                echo get_range_tag($range);
              } ?>
            <?php } else { //Wordpress Popular Postsがインストールされていない?>
              <?php //コメント順
              if ( $entry_type == 'default' ) {
                get_template_part('popular-entries');//デフォルト
              } else {
                get_template_part('popular-entries-large');//大きなサムネイル
              } ?>
            <?php } ?>
            </div>
          <?php } else { //メインページ以外?>
            <div id="new-entries" class="widget widget_new_popular">
              <h4><?php if ($title_new) {
                echo $title_new;
              } else {
                echo '新着記事';
              }
                ?></h4>
              <?php //新着記事
              if ( $entry_type == 'default' ) {
                get_template_part('new-entries');//デフォルト
              } else {
                get_template_part('new-entries-large');//大きなサムネイル
              } ?>
            </div><!-- /#new-entries -->
          <?php } ?>
        <?php
    }

上記ソースコード、function widgetの中の、以下の3行を削除して下さい。//でコメントアウトしてもうまく動かったので、私は行ごと削除しています。

  • 36行目:<?php if ( is_home() ) { //トップリストの場合?>
  • 67行目:<?php } else { //メインページ以外?>
  • 82行目:<?php } ?>

この3行の役割は、表示されるページが、Topページかそれ以外かを判断して、人気記事と新着記事のどちらを表示するか切り替えています。

この判断部分を削除することで、人気記事→新着記事の順で表示されるようになります。

これらの修正が完了したら、ファイルを更新を押して保存します。

修正後の表示

修正後はこのように表示されるようになります。

20150405-5

人気エントリーの下に、新着エントリーが表示されています。Topページも、個別記事ページも同じように表示されます。

まとめ

このカスタマイズには2点注意点があります。

修正に失敗した場合はFTPでwidget.phpを置き換える

修正を間違えてプログラム上エラーが出るようになると、ダッシュボードにも入れなくなります。その場合は、FTPでwidget.phpを置き換える必要があります。

バックアップを取っていなかった場合は、widget.phpはSimplicityのZIPファイルの中にありますので、それをアップロードします。

親テーマをバージョンアップで更新したら再度widget.phpの修正が必要

修正は親テーマを対象に行なっています。Simplicityがバージョンアップして、テーマの更新を行うと、widget.phpが置き換わります。再度widget.phpの修正が必要となります。今回と同じような修正を行って下さい。

おしまい。

スポンサーリンク

この記事がおもしろかったらシェアしてもらえると嬉しいです。

Twitterでのフォローお待ちしています。

コメント