使用AJAX的WP_UPDATE_POST onClick按钮

时间:2016-05-21 作者:Manyang

我正在尝试使用“管理”菜单上“自定义页面”中的按钮更新我的特定页面。我尝试使用ajax在updatepost中执行函数。php但是页面的内容没有变化。有人能帮我吗?

这是按钮的代码

<div>
  <input id="btn_news" class="add_content" type="button" class="button-primary" value="<?php esc_attr_e(\'Save News\', \'mytheme\'); ?>" />
  <input id="btn_aboutus" class="add_content" type="button" class="button-primary" value="<?php esc_attr_e(\'Save About Us\', \'mytheme\'); ?>" />
  <input id="btn_contact" class="add_content" type="button" class="button-primary" value="<?php esc_attr_e(\'Save Contact\', \'mytheme\'); ?>" />
</div>
此代码用于ajax

$(".add_content").click(function(){
        var BtnValue = $(this).val();
        $.ajax({
        type : \'POST\',
        url : templateUrl+\'/includes/updatepost.php\',
        data:{action:\'BtnValue\'},
        success:function(html) {
             alert(\'success\');
           }
        });
    });
这是我的更新日志。php

<?php
    if (isset($_POST[\'action\'])) {
        switch ($_POST[\'action\']) {
        case \'Save News\':
            add_content(303);
        break;
        case \'Save About Us\':
            add_content(75);
        break;
        case \'Save Contact\':
            add_content(30);
        break;
        }
    }

    function add_content($id_num){
        $update_page = array(
          \'ID\'           => $id_num,
          \'post_content\' => \'This is the updated content.\',
        );
        wp_update_post( $update_page );
    }
?>
感谢您的时间和帮助。

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

不,不,不!Never 直接发布或链接到自定义PHP文件-不会加载WordPress,而手动加载它意味着对文件层次结构进行大量假设。

使用ajax API, 正是由于这个原因:

$.ajax({
    url: "<?php echo esc_js( admin_url( \'admin-ajax.php\' ) ) ?>",
    type: "POST",
    data: {
        action: "update_button",
        button:  $( this ).val()
    }
});
对于您的PHP:

function wpse_227396_update_button() {
    switch ( filter_input( INPUT_POST, \'button\' ) ) {
        case \'Save News\':
            add_content(303);
            break;
        case \'Save About Us\':
            add_content(75);
            break;
        case \'Save Contact\':
            add_content(30);
            break;
    }
}

add_action( \'wp_ajax_nopriv_update_button\', \'wpse_227396_update_button\' );
add_action( \'wp_ajax_update_button\',        \'wpse_227396_update_button\' );

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i