子テーマ化

閲覧数: 34(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)タグ,
カテゴリー制限の現在形

残念ながらワードプレス公式サイトからは削除されてしまった「Allow Categories」プラグイ  続きを読む

検索に悩む
blank

インターネットを使って情報を入手する時、得られた情報の品質は、検索サイトの精度というよりは、検索に使  続きを読む

パンくずリスト詳細
blank

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

鬼門
blank

俗語としての「鬼門」- Wikipediaより 鬼門は本来呪術的な意味を持つ言葉であるが、転じて「よ  続きを読む

テスト系
blank

AWSで稼動している本番系の環境は、Amazon Linuxという専用のOSです。一番近いディストリ  続きを読む

コンテナとFirewall
blank

三日連続のdockerネタです。前回の「コンテナの自動起動」でサーバーを再起動した時にコンテナ(ph  続きを読む

スポンサーリンク

コメントを残す

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