web-dev-qa-db-ja.com

WebアプリとしてのWordPress - 投稿とメタデータを常に自動保存

WordPressの自動保存リビジョンをより頻繁にして、自動保存バージョンを常に最新のバージョンにすることは可能です。Googleドキュメントの動作のように。これは、更新ボタンが不要であることを意味します。投稿またはカスタム投稿タイプにアクセスして変更を加えてから、管理者の別の部分をクリックすると、変更は常に保存されます。自動保存中にすべてのカスタムフィールドを保存することは不可欠です。 (多分私達はwordpressのバージョン5.0でこれを見るでしょう;)

これが私の問題です。私は管理者の他の領域にリンクしている投稿メタボックスに役立つリンクを挿入したいのですが、各リンクの横に大きな警告を表示せずに先に保存するように伝えます。助言がありますか?

1
dwenaus

カスタム自動保存間隔を設定する

Wp-config.phpファイルに定義するだけです

// Allow revisions
define( 'WP_POST_REVISIONS', true);
// Set number of ms
define( 'AUTOSAVE_INTERVAL', 300 );

これは、たくさんのクエリを受け取り、リビジョンを投稿するということです。したがって、最大値も追加する必要があります。投稿のテーブルに不要なものが表示されないようにするためのリビジョンの数。

// You need to calculate this very precise.
// If someone needs a long time to write the document, old revisions get trashed
define( 'WP_POST_REVISIONS', 20 );

'改訂'投稿ステータスを問い合わせます

メインのクエリ投稿句を傍受するために'plugins_loaded'にフックするカスタムプラグインを介してこれを行う必要があります。

function intercept_post_clauses( $pieces, $class )
{
    $pieces['where'] = str_replace( ".post_status = 'publish'", ".post_status = 'revision'", $pieces['where'] );

    return $pieces;
}
function mod_post_clauses()
{
    add_filter( 'posts_clauses', 'intercept_post_clauses', 20, 2 );
}
add_action( 'plugins_loaded', 'mod_post_clauses' );

注:このコードはテストされていませんが、ここに直接記述されています。


注:これは良い考えではないと思います。問題は、実際のリビジョンシステムが残っていないことです。リビジョン数を大きくしすぎると、投稿テーブルに即座に何百もの冗長な投稿が表示されます。低く設定しすぎると、後に古いリビジョンを失うので、実際のリビジョンは残りません。

XY ms×# of revisions

したがって、誰かが計算後の時間よりも編集後の画面に長く留まると、リビジョンは単に失われます。

2
kaiser