0

私は、アイテムがレビューのために提出され、レビューされた後に公開される、シンプルなコンテンツワークフローシステムを開発しています。新しいバージョンのレビュー中に古いバージョンを表示する必要があるため、投稿ステータスを使用できません。

この情報を保存するために独自のテーブルを作成する必要はあまりないので、レビュー中の投稿ステータスでマークされたリビジョンを追加するためにリビジョンシステムを使用することを考えていました。次に、レビューパネル/編集ページにそれを表示しますが、ユーザーに表示されているものは古いもののままです。レビューが正常に受け入れられると、古いレビューが置き換えられます。

問題は、レビューとして更新されている投稿を保存する方法に関する情報が見つからないことです。誰かがこれをどのように達成できるか考えていますか?

ありがとう

4

1 に答える 1

0

これは解読するのが難しいクッキーであることが判明しましたが、この機能を複製しようとしている他の魂のために共有すべきだと感じる多くのことを学びました.

まず、現在の投稿の保存が更新か公開かを指定する必要があります。アカは投稿が新しいかどうか?これを確認するための巧妙な小さなトリックを考えました。

$isNewPost = $data['post_date_gmt'] == $data['post_modified_gmt'];

私が使用した最初のフックはwp_insert_post_dataフックで、ポスト オブジェクトがデータベースに挿入/更新される前に呼び出されます。データベースへの挿入をキャンセルするものを何も返さないため、このフックは優れています。もちろん、常にこれを行いたいとは限りません。投稿が新しい場合はデータベースに追加する必要があるため、レビュー中のプレースホルダーがありますが、追加するだけでなく、投稿ステータスを下書きに設定します。更新の場合は、そこにレビューを追加するだけで何も返しません。

投稿が新しい場合は、post_updatedフックにフックする必要もあります。実際の DB レコードがあるのはそのときだけなので、渡された ID をレコードに保存し、wp_insert_post_dataそれを使用して正しいpost_savedイベントを見つけてから、レビュー投稿。

Wordpress はやや奇妙です。新しい投稿画面にアクセスすると、投稿が自動ドラフト タイプのデータベースに追加され、別の投稿での数秒間の編集が保存されます (投稿タイプがそれをサポートしている場合、組み込みのものはそうします)、これはすべての保存後のイベントも発生させます。私が遭遇したもう 1 つの問題は、レビュー投稿を保存することでした。これは、post_savedandwp_insert_post_dataフックがトリガーされ、無限ループが発生するためです。

他にも興味深い問題がいくつかありました。もし興味があれば、喜んでお手伝いします。悲しいことに、私が会社のために書いたコードはプロプライエタリです。おそらく、ある時点でオープン ソース化するように彼らを説得できるでしょう (ほとんどの場合、ただし、プライバシーに関するクライアントとの契約に基づいているため、そうではない可能性があります)。

ワークフローは、それを保証するのに十分に複雑であると考えているので、図で表すかもしれません。他の人を助けるかもしれませんが、これは解決するのが簡単な問題ではありませんでした.

投稿のメタデータを扱っている場合は、一言アドバイスを差し上げます (私を信じてください。当初は気にする必要はないと言っていたとしても、彼らはあなたにそうしてほしいと思っています)。子にする。必要なその他の情報とともに、元の親をポスト メタに保存します。この方法では、編集ページの再構築に対処する必要はありません。

于 2013-04-11T04:02:50.477 に答える