モデレーター
hide
(@hideokamoto)
1:共通部分を表示するコードが書かれたcategory.phpを作成
2:差し替えが必要な箇所にフックを設置
do_action( 'your-theme-category-custom' );
3:functions.phpにカテゴリ別に出し分ける処理記述
add_action( 'your-theme-category-custom', 'your-theme-category-custom-html' );
function your-theme-category-custom-html() {
$something = 'todo';
echo $something;
}
とかでしょうかね。
classとか使えばいい感じにできそうな気はしますが、ちょっとサンプルコードは思いつかなかったです。
使う関数
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/add_action
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/do_action
探してはいないんですが、次の条件で行けるんではないでしょうか。
1. プラグインでterm_meta にテキストやHTML、画像を保存できるものを探す。
2. テンプレートで特定のカスタムフィールドが保存されている場合はそれを出力する。
ex. category.php
<?php get_header() ?>
<?php
// 現在のカテゴリーを取得
$cat = get_queried_object();
?>
<section class="main">
<?php
// 画像が保存されていたら表示
$image = get_term_meta( $cat->term_id, '_thumbnail_id', true );
if ( $image ) :
?>
<div class="post_thumbnail">
<?php wp_get_attachment_image( $image, 'large' ) ?>
</div>
<?php endif; ?>
<div class="page-header">
<h1><?php single_cat_title() ?></h1>
</div>
<?php
// HTMLが保存されていたら表示
$html = get_term_meta($cat->term_id, 'content', true);
if($html):
?>
<div class="page-content">
<?= wpautop($html) ?>
</div>
<?php endif; ?>
<div class="archive">
<!-- 以下、通常のカテゴリーループ -->
</div>
</section>
<?php get_footer(); ?>
これが色々端折っていますが、これでわりといい感じになるのでは。
CategoryTinymce みたいなプラグインで、category の説明欄に wysiwyg エディタを適用できるので、それも手ですかね。