Twenty Tenの『続きを読む』のカスタマイズ方法

先日Twenty Tenの小テーマを制作していて、困ったことがありました。

それは『続きを読む』部分についてです。

この部分については、WordPress関数『the_excerpt』なので、フィルターフック『excerpt_more』を使ってカスタマイズしよう、と思ったら上手くいきませんでした。

というわけで、その原因などを書いてみたいと思います。

症状

どういったことをしようかと思っていたかというと、『続きを読む』の<a>タグにclassを追加しようとしてました。

そこで以下のようなコード。

function add_anchor($more){
	return '<a href="'. esc_url( get_permalink() ) . '" class="test-class">続きを読む</a>';	
}
add_filter('excerpt_more', 'add_anchor');

これでうまくいくはず・・・と思いましたが、変化無しでした。

原因

ここで原因が判らず、結構ハマったのですが、ようやく原因特定。

それは、Twenty Tenのfunctions.phpの以下の部分でした。

function twentyten_auto_excerpt_more( $more ) {
	return ' &hellip;' . twentyten_continue_reading_link();
}
add_filter( 'excerpt_more', 'twentyten_auto_excerpt_more' );

つまり、Twenty Tenでもexcerpt_moreにフックしていたことでした。

解決方法

上記のコードから、twentyten_continue_reading_link()を確認。以下のようなコードです。

if ( ! function_exists( 'twentyten_continue_reading_link' ) ) :
/**
 * Returns a "Continue Reading" link for excerpts
 *
 * @since Twenty Ten 1.0
 * @return string "Continue Reading" link
 */
function twentyten_continue_reading_link() {
	return ' <a href="'. get_permalink() . '">' . __( 'Continue reading <span class="meta-nav">→</span>', 'twentyten' ) . '</a>';
}
endif;

というわけで、制作していた小テーマのfunctions.phpで、以下のようにtwentyten_continue_reading_link()を自分で作ることで解決しました。

function twentyten_continue_reading_link() {
	return '<a href="'. esc_url( get_permalink() ) . '" class="test-class">続きを読む</a>';
}

親テーマと小テーマのfunctions.phpの関係は、1)先に小テーマのfunctions.phpを呼び出し、2)次に親テーマのfunctions.phpを呼び出す、という順序です。なので、以上で解決出来ました。

他のフック

他にもいくつか関連のフックがありますね。注意が必要です。

『get_the_excerpt』にもフックされてます。

function twentyten_custom_excerpt_more( $output ) {
	if ( has_excerpt() && ! is_attachment() ) {
		$output .= twentyten_continue_reading_link();
	}
	return $output;
}
add_filter( 'get_the_excerpt', 'twentyten_custom_excerpt_more' );

また、the_excerptで出力される文字列についても同様にフックされています。

function twentyten_excerpt_length( $length ) {
	return 40;
}
add_filter( 'excerpt_length', 'twentyten_excerpt_length' );

ただ日本語の場合には、これでは対応出来ません。

以前にも『日本語で『the_excerpt』の文字数を変える方法2パターン』で書きましたが、プラグイン『WP Multibyte Patch』を有効にした状態で、フィルターフック『excerpt_mblength』を使います。

まとめ

今回は、実際には小テーマ制作の際にハマった部分ですが、Twenty Tenを直接カスタマイズする場合にももちろん使えますね。

あと、別なテーマのカスタマイズや小テーマ制作の際にも注意すべき点でもあります。

スポンサードリンク

twitterまたはFacebookでもコメントして頂けます