カテゴリーやタグの説明を記事一覧ページのトップに表示してみた

2017年6月2日

カテゴリーやタグの記事一覧ページの上部に,それぞれの説明を表示するにはどうしたらいいかコメントに問い合わせがありました。せっかくなので,ド素人がカスタマイズした内容をまとめてみることにします。

参考にした記事

このブログで使用しているテーマ「Luxeritas」の作者である「るな」さんのブログを何気に読んでいたら,参考となる記事を見つけました。

PHPファイルの用意

子テーマの functions.php と同じフォルダに下記内容で保存しておきます。とりあえず,ファイル名は list-desc.php としておきます。

<?php
if (is_category() && category_description()) {
	echo category_description();
}elseif(is_tag() && tag_description()) {
	echo tag_description();
}else {
	echo "";
}
?>

functions.php の編集

子テーマの functions.php に下記内容を追加します。2行目の 'list-desc’ 部分は,上記PHPファイル名の拡張子を除いたものです。

add_filter( 'widget_text', function( $ret ) {
	$php_file = 'list-desc';
	if( strpos( $ret, '[' . $php_file . ']' ) !== false ) {
		add_shortcode( $php_file, function() use ( $php_file ) {
			get_template_part( $php_file );
		});

		ob_start();
		do_shortcode( '[' . $php_file . ']' );
		$ret = ob_get_clean();
	}
	return $ret;
}, 99 );

ウィジェットの編集

記事一覧上ウィジェットにテキストウィジェットを追加して,[内容]にショートコード [list-desc] を入力して保存すればできあがり。

functions.php への追記

このままだとトップページや年月アーカイブページの上部に枠だけが表示されてしまいます。どうにもこうにもいかないので,「るな」さんに問い合わせをしてみました( https://thk.kanzae.net/wp/release/t3450/#comment-867 )。神対応でした……。

functions.php だけでやるということを前提に,functions.php に下記内容を追加します。

add_action( 'template_redirect', function() {
	global $_wp_sidebars_widgets, $wp_registered_sidebars;

	if( is_category() === false && is_tag() === false ) {
		if( is_active_sidebar('posts-list-upper') === true ) {
			unset(
				$_wp_sidebars_widgets['posts-list-upper'],
				$wp_registered_sidebars['posts-list-upper']
			);
		}
	}
}, 99 );

最後に

なんとか,形にすることができました。

本体をいじればもっとスマートにできるとのことなので,「Luxeritas」に実装してもらえると嬉しいのですが……。

WordPress

Posted by MSD