子テーマ化

閲覧数: 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閑話, 公開タグ,
パンくずリスト詳細
2020年5月12日

テーマの「マイナーチェンジ」に伴って「パンくずリスト」の仕様を若干変更しました。一つ前のテーマではパ  続きを読む

カテゴリーを制限する
blank
2020年5月11日

過去に何度も書いた「カテゴリー制限」の話、元はと言えば初期に書かれた「非公開」の記事が原因です。トッ  続きを読む

マイナーチェンジ
blank
2020年3月23日

かれこれ一年近くほったらかしだったので、気合をいれて「テーマ変更」と思っていたのですが、、、いろいろ  続きを読む

6月の検索ワードまとめ
blank
2019年6月30日

6月の検索ワードのまとめです。 意外なところで「zabbixダウングレード」が複数回検索され、単独の  続きを読む

アクセシビリティ対策
blank
2019年6月23日

テーマカスタマイズの一環で、トップページに一覧表示されている「写真を左右交互に表示する」ようにした際  続きを読む

dockerとproxy
blank
2019年6月18日

dockerやdocker-composeをプロキシ環境下で使うのに苦労したので忘れないようにメモし  続きを読む

コメントを残す

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