Skip to content

[WP Audit] DataSync::term_page_excerpt() のロジックが逆転 — 手動設定した抜粋がターム説明で上書きされるバグ #118

Description

@claude

概要

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/ ディレクトリに DataSyncterm_page_excerpt メソッドのテストケースを追加し、(1) 抜粋が空の場合にターム説明が返る、(2) 抜粋が設定済みの場合に抜粋が優先される、の2ケースを検証する

Generated by wp-plugin-audit on 2026-07-07

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions