カテゴリーやタグの説明を記事一覧ページのトップに表示してみた
カテゴリーやタグの記事一覧ページの上部に,それぞれの説明を表示するにはどうしたらいいかコメントに問い合わせがありました。せっかくなので,ド素人がカスタマイズした内容をまとめてみることにします。
参考にした記事
このブログで使用しているテーマ「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」に実装してもらえると嬉しいのですが……。
ディスカッション
コメント一覧
ますぞえ様
わざわざ記事にしてくださって誠にありがとうございます。
この記事を参考に無事表示することができました。
ずっと嵌ってた問題だったのでスッキリです。
本当にありがとうございました。