サポート » 使い方全般 » リビジョンの保存項目を追加したい

  • リビジョンにカテゴリー・タグ・アイキャッチの情報を追加したいです。

    wp-includes/revision.php 内にフィルターフックがあるところまでは把握したのですが、
    いざ追加するとなるとどう作業をすればよいかがわかりません。

    カテゴリーとタグに関しては、SQLで投稿データと紐付ける必要はあるのだろうな、とは思っているのですが・・・。

    記述の仕方、もしくはそういうプラグインをご存知の方、ご教授いただけないでしょうか?
    よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター Takuro Hishikawa

    (@hissy)

    プラグインの有無は分からないので、実装について考えてみます。

    まず、リビジョンが保存されているwp_postsテーブルには、タクソノミーやカスタムフィールドの情報は保存されていません。もちろん、リビジョンではなく実体のある投稿データについても同様です。投稿にはpost_idが割り振られますが、リビジョンに付いても同様にpost_idが存在します。

    投稿に関連づけられたタームが保存されているのはwp_term_relationshipsテーブルですが、object_idのカラムが投稿IDに該当します。また、カスタムフィールドが保存されているのはwp_postmetaテーブルですが、こちらのpost_idのカラムが投稿IDに該当します。

    したがって、リビジョンの保存時にリビジョンのpost_idを使ってwp_term_relationshipsテーブルやwp_postmetaテーブルのデータを複製すれば、リビジョンにもタクソノミーやカスタムフィールドのデータは保存可能なはずです。

    と、ここまではいつも考えていることです。concrete5ではページに関連するあらゆるデータのバージョン管理が可能なのに、なぜWordPressではできないのか…とずっと思っていましたので。

    ただし、問題もいくつかあります。

    1)リビジョンの画面ではタクソノミーやカスタムフィールドについて確認することができませんし、この画面はカスタマイズができない。
    2)タームの利用数のカウントがおかしくなる可能性がある。リビジョンのpost_statusはinheritなので、問題ない気もするが…。

    モデレーター Takuro Hishikawa

    (@hissy)

    カスタムフィールドだけに限れば、Custom Field Suiteのアドオンで、このプラグインで作ったカスタムフィールドのデータをリビジョンに保存し、リビジョンから復旧した際にカスタムフィールドのデータも復旧する機能を持ったものがあります。
    https://github.com/mgibbs189/cfs-revisions

    これは、Custom Field Suiteプラグインが作成する独自テーブルにデータを保存するもので、コアとの機能の衝突を避けるには、別テーブルしかないのかなぁ〜と思っているところです。

    モデレーター Takuro Hishikawa

    (@hissy)

    コアトラックを見てみましたが、カスタムフィールドをリビジョンに含める件は開発が進んでるみたいです。

    “Framework for storing revisions of Post Meta” https://core.trac.wordpress.org/ticket/20564

    2年かかってまだやってるということは、なかなかハードルが高そうですね。タクソノミーについてはチケットは見つかりませんでした。

    トピック投稿者 chiilog (Chiaki Okamoto)

    (@mel_cha)

    > Takuro Hishikawaさま

    保存方法、問題点、それぞれ詳細に教えて頂いてありがとうございます!
    コアへの実装も含め、なかなかハードルが高そうですね。
    プラグインがリビジョン削除であったり、コントロール系が多いのもなんとなく頷けました。

    カスタムフィールドの追加、はプラグインが多少検索で引っかかりますが、
    別テーブルへ保存しているのですね・・・。なかなかそこまで読み込めず。

    ともあれ、頂いた方法で実装方法を検討してみます!
    本当にありがとうございました。トピックは解決済みとさせていただきます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「リビジョンの保存項目を追加したい」には新たに返信することはできません。