子テーマ化

閲覧数: 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)タグ,
最近の小ネタ

最近の小ネタはWordpress関連ばっかりでMediawikiはすっかりお見限りw そのうちMed  続きを読む

WP Fastest Cache
blank

サイトへのアクセスを高速化するには、いわゆる「キャッシュ系」のプラグインを導入するのが手っ取り早いし  続きを読む

閲覧数まとめ
blank

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

最終更新日
blank

投稿日は表示されるけど、その後の修正は当然のことならが投稿日には反映されない。一般的な投稿ならそれほ  続きを読む

テーマ詳細
blank

今回使用したテーマは「oblique」です。日本語では「斜めの、斜め方向の、傾いた」という意味です。  続きを読む

ページナビ
blank

いわゆるトップページで一覧表示する時や、シングルページで個別記事を表示する時に、ページ下部に「新しい  続きを読む

スポンサーリンク

コメントを残す

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