[ワードプレス]functions.phpを子テーマで実装する:今回はthe_excert

こんばんは!くまかけです。

テーマをカスタマイズするとき、functions.phpがネックになります。

というのも、functions.phpは上書きで子テーマを作るわけにはいかないからです。

テーマが読み込まれる順番としては

子テーマのfunctions.php → 親テーマのfunctions.php

となります。

つまり「追加はできるが上書きができない」状態となります。

a0001_014259

filterやactionの関数を書き換えたいときは?

親テーマのローディング終了後に、子テーマの内容で差し替えます。

子テーマのfunctions.php → 親テーマのfunctions.php

→親テーマローディング終了 → 子テーマの関数を差し替える

実際にやってみましょう!

長文を短く表示するthe_excrptを記事にリンクするようにカスタマイズしてみます。
下記を子テーマのfunctions.phpに記述します。

<?php
if( !function_exists( 'child_theme_setup' )):
     // 関数を削除、追加する処理です。
	function child_theme_setup(){
		remove_filter('excerpt_more', 'dynamicnews_excerpt_more'); → 親functionsを削除します
		add_filter('excerpt_more', 'dynamicnews_excerpt_more_child'); → 子functionsを追加します
	}
endif;
// 親テーマローディング終了後に削除、追加処理が呼ばれるように定義します
add_action('after_setup_theme','child_theme_setup');

// 入れ替える子functionsの実態です。関数名は親functionsと重複しないようにします
function dynamicnews_excerpt_more_child($more) {

	// Get Theme Options from Database
	$theme_options = dynamicnews_theme_options();

	// Return Excerpt Text
	if ( isset($theme_options['excerpt_text']) and $theme_options['excerpt_text'] == true ) :
		return '...[<a href="' . get_permalink() . '">more</a>]';
	else :
		return '';
	endif;
}
?>

 

結論

ちょっと手間ですが、変更箇所を子テーマに分離をしておくと、親テーマがバージョンアップなどにより書き換えられても、すぐに反映可能です。

また、オリジナルに戻したいときも、テーマを切り替えるだけで戻す事ができます。

カスタマイズするときは、ぜひ子テーマを作成して実施して下さい(^^)

The following two tabs change content below.
くまかけ
齢50を過ぎたオッチャンプログラマーです。 元々は、COBOLerでしたが、いつからかCをやるようになり、いまはiPhoneアプリの開発を中心として、活動をしています。 ワードプレスとの関わりはFacebookと連携しての情報ストック源として考え始めてから。 一緒に活動するメンバーから、ワードプレスの使い方等を訪ねられるようになり、支援をしていく中で、月額500円(ワンコイン)で利用できるレンタルサーバーの提供およびワードプレスの設定代行を行っています。 レンタルサーバーの初期費用には、既存テーマを利用した、ワードプレスの基本設定も含まれています。 「顔の見えるサポート」が必要なレンタルサーバーや、ワードプレスの設定代行が必要な時は、ぜひお声がけ下さい。 主な情報提供はFacebookですが、@kumakake でもたま〜に、つぶやいています(^^)
くまかけ

最新記事 by くまかけ (全て見る)

Loading Facebook Comments ...

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL