子テーマ化

閲覧数: 32(0)

復帰記念にテーマを変更した記事「テーマリニューアル」では子テーマ化せずにCSSのみで対応する方針と言っていましたが、今回使用しているテーマである「Oblique」がバージョンアップすることになり、修正箇所を確認していたところ、いろいろ手を入れている部分も増えてきたのでこの際、前言を撤回して子テーマ化することにしましたw

Fashionistas」の時には親テーマを直接修正した部分があったのでバージョンアップに際して手作業が必要でしたが、今回は初めて「手作業フリー化」を達成しましたw

子テーマのフォルダは単純に「oblique-child」としました。それに合わせた「style.css」の冒頭部分の概略は以下の通りです。

Theme Name: Oblique Child ← 子テーマの名称
Theme URI: http://themeisle.com/themes/oblique
Author: Themeisle
Author URI: http://themeisle.com/
Template: oblique
Text Domain: oblique-child ← 子テーマのフォルダ名

「functions.php」では明示的に親テーマの「style.css」を読み込んでから子テーマの「style.css」を読み込むことにしました。ただし、子テーマ化した場合には、子テーマの「functions.php」が先に読み込まれてしまうため、親テーマの関数を上書きするなどの作業はこの時点では行えません。テーマ全体が読み込まれてから改めて関数の上書きなどを実施するために、「get_template_part()」で「inc/template-tags.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')
    );
}
get_template_part( 'inc/template', 'tags' );
?>

「oblique_footer_credits() 関数」は、フッター情報を表示する関数です。表示する内容を上書きしたかったので、子テーマ側に「同名」で書いたら親テーマを上書きできるのかと思ったのですが、二重宣言のエラーで上手くいきませんでした。そこで、実現したい表示内容を子テーマが読み込まれるタイミングで「.._credits2()関数」として登録し、その後、親テーマが読み込まれるタイミングではオリジナルの「.._credits()関数」をそのまま一旦は登録します。全テーマの読み込みが終わってから、以下の関数を呼び出すことにより、オリジナルのフッター情報を取り除いています。今回はこれが実現したので「手作業フリー化」を達成することができました。

function remove_footer_credits () {
        remove_action( 'oblique_footer', 'oblique_footer_credits' );
        }
add_action( 'after_setup_theme', 'remove_footer_credits' );

「oblique_excerpt_more2()関数」もオリジナルとの二重宣言を回避するため子テーマの読み込みのタイミングで別名登録し、親テーマの読み込みではオリジナルを一旦登録し、全テーマの読み込みが終わってからオリジナルを取り除くことで子テーマの機能を実現しています。ここではトップページで表示される抜粋記事の最後の「[…]」を記事へのリンクとする細工をしています。原理は上のフッター情報の取り除きと同じです。

以下が「inc/template-tags.php」の全行です。「oblique_updated_on()関数」は記事の最終更新日を表示するための関数です。これはオリジナルのテーマには含まれていないため単純な追加でOKです「oblique_entry_footer()関数」はフッターに表示される「タグ」をアイコン化するための関数です。

<?php
if ( ! function_exists( 'oblique_updated_on' ) ) :
function oblique_updated_on() {
        if ( esc_html(get_the_date(ymd)) < esc_html(get_the_modified_date(ymd))) {
        $time_string = '<time class="entry-date-updated" <time class="updated" datetime="%3$s">最終更新日 %4$s</time>';
        }
        $time_string = sprintf( $time_string,
                esc_attr( get_the_date( 'c' ) ),
                esc_html( get_the_date()),
                esc_attr( get_the_modified_date( 'c' ) ),
                esc_html( get_the_modified_date() )
        );
        printf( __( '<span style="margin-right:10px" class="byline">%1$s</span>', 'oblique' ),
                sprintf( '<a href="%1$s" rel="bookmark">%2$s</a>',
                        esc_url( get_permalink() ),
                        $time_string
                )
        );
}
endif;

if ( ! function_exists( 'oblique_entry_footer' ) ) :
        /**
         * Prints HTML with meta information for the categories, tags and comments.
         */
        function oblique_entry_footer() {
                // Hide category and tag text for pages.
                if ( 'post' == get_post_type() && ! get_theme_mod( 'meta_singles' ) ) {

                        /* translators: used between list items, there is a space after the comma */
                        $tags_list = get_the_tag_list( '', __( ', ', 'oblique' ) );
                        if ( $tags_list ) {
                                /* translators: Tags list */
                                printf( '<span class="tags-links">' . apply_filters( 'oblique_post_tags_message', __( '<span style="font-size:20px" class="genericon genericon-tag tag"></span> %1$s', 'oblique' ) ) . '</span>', $tags_list );
                        }
                }
        }
endif;

function oblique_footer_credits2() {
?>
        &copy;
<?php
        echo '2014-';
        echo date('Y');
        echo ' ';
        bloginfo( 'name' );
        esc_html_e('.&nbsp;All Right Reserved.', 'oblique');
        printf( __( '&emsp;Theme: %2$s by %1$s.', 'oblique' ), 'Themeisle', '<a class="site-footer" href="http://themeisle.com/themes/oblique/" rel="nofollow">Oblique</a>' );
        if ( wp_is_mobile() ) { echo "<br />";}
        echo '&emsp;<a href="' . esc_url( __('https://www.arigato.jp/プライバシ>ーポリシー/', 'oblique' ) ) . '" rel="nofollow"> プライバシーポリシー </a>';
        if ( is_tablet() ) { echo "<br />";}
        echo '&emsp;<a href="' . esc_url( __('mailto:webmaster@arigato.jp', 'oblique' ) ) . '" rel="nofollow"> お問い合わせ </a>';

}
add_action( 'oblique_footer', 'oblique_footer_credits2' );

function remove_footer_credits () {
        remove_action( 'oblique_footer', 'oblique_footer_credits' );
        }
add_action( 'after_setup_theme', 'remove_footer_credits' );

function oblique_excerpt_more2( $more ) {
        $excerpt = get_theme_mod( 'exc_lenght', '35' );
        if ( $excerpt == '0' ) {
                return '';
        } else {
                return '<a class="entry-meta" href=' . get_permalink( $post_id ). '> [...] </a>';
        }
}
add_filter( 'excerpt_more', 'oblique_excerpt_more2' );

function remove_excerpt_more () {
        remove_filter( 'excerpt_more', 'oblique_excerpt_more' );
        }
add_action( 'after_setup_theme', 'remove_excerpt_more' );

?>
カテゴリーIT閑話, 公開タグ,
ページナビのテキスト
2021年4月1日

記事ページの下部に前後の記事(投稿)へのリンクが表示される仕様なのだが、「カテゴリーに制限」をかけて  続きを読む

閲覧数まとめ
blank
2021年3月25日

閃きついでに総合計と週合計をフラグで制御する方式に変更してみた。これまではベタに関数をまるまるコピー  続きを読む

閃きは大事だw
blank
2021年3月23日

このサイトは、あくまでもCMSであるWordPressの構築やクラウドであるAWSの運用ノウハウ取得  続きを読む

ElasticPress 3.5.6
blank
2021年3月19日

マイナーバージョンアップにも関わらず、検索スコアリングのパラメータが微調整された結果、期待する検索結  続きを読む

管理画面を制限する
blank
2021年2月22日

このサイトではネット上のさまざまな攻撃からの防御のため、Wordfenceプラグインの無料版を使用し  続きを読む

検索精度を高める
blank
2020年11月1日

検索ネタを連発するのはElasticsearchやElasticPressがバージョンアップした時の  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください