сообщение об обновлении wp через ajax с веб-интерфейса


Настройка:

Три открытые вкладки в браузере:

Вкладка 1: Сообщение администратора для редактирования

Вкладка 2: Внешний вид этого сообщения в "режиме редактирования"

Вкладка 3: Внешний вид в режиме "без редактирования" (запрос по умолчанию)

Я редактирую сообщение на вкладке 2 (редактирование интерфейса) и сохраняю его через AJAX (через wp_update_post). Когда я обновляю эту вкладку или вкладку 3, я вижу изменения.

Но когда я обновляю вкладку 1 (страница редактирования бэкенда WP-публикации), я вижу старое содержимое в редакторе, но была добавлена новая редакция. Когда я жестко обновляю эту страницу, она работает так, как ожидалось. (Это может быть очень запутанным для редакторов)

Так почему же он работает только при жестком обновлении, но не при обычном обновлении? Есть ли какое-либо активное кэширование? (не удалось ничего найти в кодексе)

Упрощенное действие сохранения Ajax:

function save_page() {
    $postID = (int)$_POST['postID'];
    $content = $_POST['content'];

    $my_post = array(
        'ID'           => $postID,
        'post_content' => $content
    );

    wp_update_post( $my_post );

    exit;
}

Редактировать:

В бэкэнде при обычном обновлении:

    global $post;
    echo "<pre>";
    print_r($post->post_content);
    echo "</pre>";

Выводит содержимое результата, отличное от показанного в редакторе.

Author: xsonic, 2014-03-01

2 answers

Вы можете остановить публикацию изменений с помощью define('WP_POST_REVISIONS', false); в wp-config.php или попробуйте ниже, если это сработает.

function save_page() {
    exit( wp_update_post( array(
        'ID'           => absint( esc_attr( $_POST['postID'] ) ),
        'post_type'    =>'your post type'
        'post_content' => esc_attr( $_POST['content'] )
    ) ) );
}
 0
Author: Rajeev Vyas, 2014-03-01 15:11:54

Проблема заключалась в автозаполнении текстовой области в Firefox (как я заметил, эта проблема присутствовала только в FF)

На данный момент я добавил autocomplete="off" в текстовую область, созданную в class-wp-editor.php

Добавление его через JS не сработало (скорее всего, потому, что FF поместил текст в текстовую область до того, как мой JS был уволен)

РЕДАКТИРОВАТЬ:

В WP 3.9 будет добавлена опция для установки autocomplete="off" для экземпляра редактора: https://core.trac.wordpress.org/ticket/27251

 0
Author: xsonic, 2014-03-02 07:14:36