web-dev-qa-db-ja.com

WordPressの自動保存でプラグインフィールドを保存する方法

設定:

  • WordPress投稿/ページを追加/編集する
  • いくつかの隠しフィールドを持つ独自のポストボックスを持つプラグイン。

問題:

これらのカスタム隠しフィールドを他の投稿データと一緒に自動保存機能内でどのように保存できるか

ありがとう

2
diosney

自動保存する必要があるプラグインを作成したところで、コードを詳しく調べ始めました。自動保存が起動したときにChromeのコンソールを調べ始めるようになったので、JavaScriptでトリガする必要があることを確認しました。私はそれからautosave.jsがadmin-filters.phpのクラスtags-inputを探すのを見ました、あなたはコメントを見ることができます:

// NOTE: the class "tags-input" allows to include the field in the autosave $_POST (see autosave.js)

だから私はちょうど私の隠しフィールドにクラスtags-inputを追加し、それは今自動保存が起動したときに保存されます!

これが私の例です:<input type="hidden" class="tags-input" name="key" value="value" />

更新:

今、あなたはあなた自身のajax関数によってあなたのデータを追加しなければなりません。 (新しいjsファイルを追加してフッターに含めます。admin_enqueue_scripts)

jQuery(document).ajaxSend(function(e, x, a) {
    var data = 1;
    a.data += '&' + jQuery.param( {test_data: data} );
});

そして節約

add_action('save_post', 'autosave_save_custom');

function autosave_save_custom( $post ) {
    if( wp_is_post_autosave($post) && isset( $_POST['test_data'] ) ) {
        $test_data = intval( $_POST['test_data'] );
        $post_id = $post->ID;
        update_metadata( $post->post_type, $post_id, 'test_data', $test_data );
    }
}
2