私達の会社は私達の内容APIを消費するWordpressの差込を出した。問題は、コンテンツの一部が消えてしまうことです。時々、時には永遠に。法的に安全な側になるためには、私たちのページから削除されたコンテンツは、プラグインユーザー側でも削除する必要があることを強制する必要があります。
私たちは月に一度クーロンの仕事をチェックしてからサイトの所有者が自分で追加したかもしれないコンテンツを失うことがないようにインポートされたコンテンツを "ドラフト"に設定することによってこれを行います。
彼はそのコンテンツを再公開することができますが、法的な問題がある場合はそれが彼の問題です。
とにかく、私たちが彼のページのいくつかを "ドラフト"に設定したことをページの所有者にどのように通知するのが一番良いのでしょうか?私は管理者への通知を調べましたが、それらは主に "あなたの設定は保存されました"のような短くて即座のメッセージのためのようです。
サイトの所有者に通知するための良い方法は何ですか?「さて、これはあなたが行っている間に起こったのです、あなたはそれを調べる必要があるかもしれません」
私は同様のことをして、コンテンツの摂取に関する問題を指摘しています。あなたはかなり早く電子メールの疲れを得るので、私はそれが指定された時間間隔からのダイジェスト形式でない限り、クーロンから電子メールを送ることに対して警告するでしょう。
フラグが設定された投稿にリンクしている、または投稿がない問題にフラグを立てた別の投稿タイプで種類のキューを作成しました。そこから、編集者は問題を解決する(削除する)か、または期待通りにマークする( 'expected'のカスタムpost_statusに設定する)ことができます。
私はあなたにプロプライエタリなプラグインのためのコードベースを与えることができませんが、ここに私が取ったステップがあります:
1。コンテンツフラグの投稿タイプを作成する
2。新しい手動投稿をedit.phpにリダイレクトし、投稿を追加するためのサブメニュー項目を削除します
Cronがこれらの投稿を作成するだけで、ユーザーは作成しないようにします。
add_action( 'init', 'redirect_new_flag_post' );
function redirect_new_flag_post (){
global $pagenow;
if( $pagenow === 'post-new.php' && isset( $_GET['post_type'] ) && $_GET['post_type'] === 'YOUR_POST_TYPE' ){
wp_redirect( '/wp/wp-admin/edit.php?post_type=YOUR_POST_TYPE' );
die();
}
}
add_action( 'admin_menu', 'remove_flag_menu_items' );
function remove_menu_items (){
remove_submenu_page( 'edit.php?post_type=YOUR_POST_TYPE', 'post-new.php?post_type=YOUR_POST_TYPE' );
}
3。カスタム投稿タイプのedit.phpのカスタム列を作成します。詳しくは この投稿 をご覧ください。
4。カスタム投稿タイプにメタボックスを追加する
フラグ付き投稿情報
解決アクション
5。フラグ付きの投稿に管理者通知を作成する
6。 Flagモデルクラスを作成する
これに似たクラスを作成することができます。
class Flags{
public function add( $post_id, $title, $desc, $meta_data = array(), $flagger = 'cron' ){
// Deduplicate flag
// Insert flag
}
public function resolve( $post_id ){
// Delete post via ID
}
public function save( $post_id ){
// Set post_status to 'expected'
}
public function clear_saved( $post_id ){
self::resolve( $post_id );
}
}
7。 cronスクリプトからコンテンツにフラグを立てる
スクリプト内で、フラグを立てる必要がある投稿を識別するための制御構造を定義できます(つまり、投稿が正しく挿入されなかった、コンテンツがOrigin CMSから欠落している、など)。これらの投稿には、Flagクラスを使用してフラグを立てる必要があります。
Flags::add(
$post_id,
'Lorem Ipsum',
'This is why this post is getting flagged',
array( 'raw_data' => $content_object )
);
8。メールダイジェストを作成する
最新のコンテンツフラグを照会し、一定の間隔でダイジェストを管理者に送信するための個別のcronスクリプトを作成します。管理者にとって、問題へのリンクを受信し、生データを参照し、データなしでデバッグするのではなく手動で問題を解決できることは有益です。
9。ガベージコレクション
このアプローチはうまくいきましたが、大量のデータを摂取している場合は、コンテンツのフラグをすぐに積み上げることができます。管理者が問題を解決していないことがわかった場合は、古いフラグに対してガベージコレクションスクリプトを実行する必要があります。また、一貫して無視される場合は、コンテンツフラグを追加するための非常に厳格なルールのパターンを識別する必要があるかもしれません。