STINGER6 カスタマイズした子のfunctions.php

ソフトウェアWordPress

2か月前にSTINGER5を利用してブログを始めました。ところが、もうSTINGER6が公開されているのを知りました。新しい物好きなもので、早速バージョンアップしてみました。

カスタマイズなど少ししかしてないのでスムーズにいきました。STINGER5と今度のSTINGER6では、ウィジェットがちょっと違っていました。で、ここは書き換えることになりましたのでメモしておきます。

functions.phpファイルは、他のPHPファイルと違って子ファイルで上書きしてくれません。子ファイルを読み込んで親ファイルを読み込みます。なので、一工夫がいります。

以前、パーマリンクが日本語になるといって言っていましたが、これは「STINGER管理」の「日本語パーマリンクを自動変換する」にチェックを入れるのを忘れていたためでした。強制的に修正する方法は削除しました。すみません。

スタイルシートのインポート

まず最初に。
カスタマイズには関係ないですが、Wordpressのサイトによると、子テーマのスタイルシートに親テーマのスタイルシートを @import を使用してインポートするのは良い方法ではないとのことが書いてありました。

WordPress公式サイトの「子テーマ」のページ

STINGER5の時もそうでしたが、長い方のを使用します。

add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array('parent-style')
    );
}

ウィジェットの追加

STINGER6では新たに、「投稿記事の下に一括表示」と「固定記事の下に一括表示」が追加されました。

私はこれに、
・サイドバー上300px用
・一覧記事下一括表示
・関連記事下一括表示
・ページナビ下一括表示
の4つを追加しました。

サイドバー上300px用は、

register_sidebar( array(
    'id' => 'sidebar-7',
    'name' => 'サイドバー上300px用',
    'description' => '「テキスト」をここにドロップしてコードを入力して下さい。タイトルは反映されません。',
    'before_widget' => '',
    'after_widget' => '',
    'before_title' => '',
    'after_title' => '',
));

他は、「投稿記事の下に一括表示」と一緒にしました。

register_sidebar( array(
    'id' => 'sidebar-8',
    'name' => '一覧記事下一括表示',
    'description' => '「テキスト」をここにドロップしてコードを入力して下さい。タイトルは反映されません。',
    'before_widget' => '<div class="kizi-under-box">',
    'after_widget' => '</div>',
    'before_title' => '<p style="display:none">',
    'after_title' => '</p>',
));

2行目のid のところは、親で sidebar-6 まで作られていますから、新しく作るのは順に sidebar-7 から割り振りします。

この部分は親を読み込んでから読み込むようにします。

サムネイルを作らない

WordPressの「メディア設定」で、サムネイルのサイズをゼロにしても作られてしまいます。STINGERで作るようにしているのでしょう。私は、作らないようにしています。

// サムネイル 中、大、作成しない
add_image_size( 'st_thumb100', 0, 0, true );
add_image_size( 'st_thumb150', 0, 0, true );

この部分も親を読み込んだ後に読み込ませます。

ヘッダー画像の大きさ変更

画像の幅を1000px、高さを300pxにしました。

$custom_header = array(
    'random-default' => false,
    'width' => 1000,
    'height' => 300,
    'flex-height' => true,
    'flex-width' => false,
    'default-text-color' => '',
    'header-text' => false,
    'uploads' => true,
    'default-image' => get_stylesheet_directory_uri() . '/images/af.png',
);
add_theme_support( 'custom-header', $custom_header );

まとめ

簡単にまとめますと、

  • 11行目
    st_register_sidebarsが無いなら(子を先に読み込むから親にあるst_register_sidebarsは無い事になる)、
  • 12行目
    last_loadが無いなら(last_loadはまだ作ってないから無い)、
  • 13行目
    last_loadを作る
  • 16~56行目
    last_loadの内容
  • 60行目
    すべてのテーマを読み込んだらlast_loadを読み込む。

functions.phpとファイル名を付けて、子テーマのフォルダにアップします。

<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array('parent-style')
    );
}

if ( !function_exists( 'st_register_sidebars' ) ) {
    if ( !function_exists( 'last_load' ) ) {
        function last_load() {

// ウイジェット追加
register_sidebar( array(
    'id' => 'sidebar-7',
    'name' => 'サイドバー上300px用',
    'description' => '「テキスト」をここにドロップしてコードを入力して下さい。タイトルは反映されません。',
    'before_widget' => '',
    'after_widget' => '',
    'before_title' => '',
    'after_title' => '',
    ));
register_sidebar( array(
    'id' => 'sidebar-8',
    'name' => '一覧記事下一括表示',
    'description' => '「テキスト」をここにドロップしてコードを入力して下さい。タイトルは反映されません。',
    'before_widget' => '<div class="kizi-under-box">',
    'after_widget' => '</div>',
    'before_title' => '<p style="display:none">',
    'after_title' => '</p>',
    ));
register_sidebar( array(
    'id' => 'sidebar-9',
    'name' => '関連記事下一括表示',
    'description' => '「テキスト」をここにドロップしてコードを入力して下さい。タイトルは反映されません。',
    'before_widget' => '<div class="kizi-under-box">',
    'after_widget' => '</div>',
    'before_title' => '<p style="display:none">',
    'after_title' => '</p>',
    ));
register_sidebar( array(
    'id' => 'sidebar-10',
    'name' => 'ページナビ下一括表示',
    'description' => '「テキスト」をここにドロップしてコードを入力して下さい。タイトルは反映されません。',
    'before_widget' => '<div class="kizi-under-box">',
    'after_widget' => '</div>',
    'before_title' => '<p style="display:none">',
    'after_title' => '</p>',
    ));

    // サムネイル 中、大、作成しない
    add_image_size( 'st_thumb100', 0, 0, true );
    add_image_size( 'st_thumb150', 0, 0, true );
        }
    }
}
// 最後に読み込み
add_action( 'after_setup_theme', 'last_load' );

// ヘッダ画像サイズ変更
$custom_header = array(
    'random-default' => false,
    'width' => 1000,
    'height' => 300,
    'flex-height' => true,
    'flex-width' => false,
    'default-text-color' => '',
    'header-text' => false,
    'uploads' => true,
    'default-image' => get_stylesheet_directory_uri() . '/images/af.png',
);
add_theme_support( 'custom-header', $custom_header );
?>