WP_UPDATE_POST从前端通过AJAX

时间:2014-03-01 作者:xsonic

设置:

浏览器中有三个打开的选项卡:

选项卡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>";
打印不同于编辑器中显示的结果内容。

2 个回复
最合适的回答,由SO网友:xsonic 整理而成

问题是Firefox中的Textarea自动完成(我注意到,这个问题只存在于FF中)

现在,我补充说autocomplete="off" 到中创建的文本区域class-wp-editor.php

通过JS添加它不起作用(很可能是因为FF在我的JS被触发之前将文本放入了textarea)

EDIT:

在WP 3.9中,将在set中添加一个选项autocomplete="off" 对于编辑器实例:https://core.trac.wordpress.org/ticket/27251

SO网友:Rajeev Vyas

可以使用停止发布修订define(\'WP_POST_REVISIONS\', false); 在wp配置中。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\'] )
    ) ) );
}

结束

相关推荐

Front-End Post Submission

我正在尝试添加一个表单,用户可以从前端提交帖子。我正在学习本教程:http://wpshout。com/wordpress从前端提交帖子/我正在做的是添加this code 到我的一个页面模板。表单显示正常,但当我单击“提交”按钮时,它会显示“Page not found error“”许多评论者说这不起作用。谁能给我指出正确的方向吗?代码是否不完整?有缺陷吗?我做错什么了吗?谢谢Towfiq I。