概要
DataSync::term_page_excerpt() に条件分岐の逆転バグが存在します。現在の実装では「投稿抜粋(excerpt)が空の場合は何もしない」「抜粋が設定済みの場合にターム説明で上書きする」という逆の動作になっています。本来の意図は「手動設定した抜粋を優先し、未設定の場合のみターム説明をフォールバックとして返す」はずですが、コードはその逆を実装しています。
Evidence
- 問題箇所:
src/Tarosky/RichTaxonomy/Controller/DataSync.php:36-48
- 現在のコード:
if ( ! $excerpt ) {
return $excerpt; // 空なら空のまま返す(フォールバック不発)
}
// ...
return $term->description; // 抜粋が設定済みのときだけterm descriptionで上書き
- 期待される動作:
if ( $excerpt ) {
return $excerpt; // 手動設定済みなら優先
}
// ...
return $term->description; // 未設定時のみターム説明をフォールバック
- タームページ作成時(
PageAccessor::draft_for_term())は post_excerpt => $term->description で初期値を設定しているため(src/Tarosky/RichTaxonomy/Utility/PageAccessor.php:209)、実際には excerpt が空でないケースが多く、このバグが常時発動する。
- 結果として、ユーザーがブロックエディターで抜粋を書き換えても、フロントエンドでは常にターム説明が表示されてしまう。
推奨アクション
src/Tarosky/RichTaxonomy/Controller/DataSync.php:40 の条件を if ( ! $excerpt ) → if ( $excerpt ) に修正する
- 修正後のロジック: 「手動設定済み抜粋があれば
$excerpt を返して早期リターン。なければターム説明をフォールバックとして返す」
- 単体テスト追加:
tests/ ディレクトリに DataSync の term_page_excerpt メソッドのテストケースを追加し、(1) 抜粋が空の場合にターム説明が返る、(2) 抜粋が設定済みの場合に抜粋が優先される、の2ケースを検証する
Generated by wp-plugin-audit on 2026-07-07
概要
DataSync::term_page_excerpt()に条件分岐の逆転バグが存在します。現在の実装では「投稿抜粋(excerpt)が空の場合は何もしない」「抜粋が設定済みの場合にターム説明で上書きする」という逆の動作になっています。本来の意図は「手動設定した抜粋を優先し、未設定の場合のみターム説明をフォールバックとして返す」はずですが、コードはその逆を実装しています。Evidence
src/Tarosky/RichTaxonomy/Controller/DataSync.php:36-48PageAccessor::draft_for_term())はpost_excerpt => $term->descriptionで初期値を設定しているため(src/Tarosky/RichTaxonomy/Utility/PageAccessor.php:209)、実際には excerpt が空でないケースが多く、このバグが常時発動する。推奨アクション
src/Tarosky/RichTaxonomy/Controller/DataSync.php:40の条件をif ( ! $excerpt )→if ( $excerpt )に修正する$excerptを返して早期リターン。なければターム説明をフォールバックとして返す」tests/ディレクトリにDataSyncのterm_page_excerptメソッドのテストケースを追加し、(1) 抜粋が空の場合にターム説明が返る、(2) 抜粋が設定済みの場合に抜粋が優先される、の2ケースを検証するGenerated by wp-plugin-audit on 2026-07-07