使用AJAX删除WordPress中自定义表的行

时间:2014-02-22 作者:Mayeenul Islam

从我的自定义表($table = $wpdb->prefix . \'user_req\';) 我正在用显示数据$wpdb->get_results() 和foreach循环:

my table

我设法用表单中的单个值更新数据库,表单中有一个“提交”按钮。但是,我想通过单击(x) 每行右侧的按钮。我可以使用$_GET[] 并且可以轻松删除该行,但在这种情况下,我想使用AJAX。

这个(x) 每行右边的按钮实际上是:

<input type="button" class="delete" title="Exclude This One"/>
我不是代码背景,所以我实际上正在努力解决它。当我搜索时,大多数解决方案都是针对原始PHP mySQL的,但我正在尝试用WordPress的方式来处理它。我可以准备我的$wpdb删除查询:

<?php $wpdb->delete( $table, array( \'post_id\' => $products->post_id ) ); ?>
但无法以WordPress AJAX的方式实现。因此,任何帮助都将不胜感激。

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

现在,您需要设置nonce 隐藏字段或元素,以便您可以验证请求。看看《法典》中的例子。

设置帖子ID和Nonce时,需要将特定帖子的ID添加到“删除”按钮或与该条目关联的隐藏输入字段中。我有示例设置,因此您需要添加post_id 以及nonce 到元素id,格式如下#delete_postid_nonce. 您的元素ID需要这样结束:#delete_12_94f3a1e666.

您可以使用以下方式进行分配:$element_id = \'delete_\' . $products->post_id . \'_\' . wp_create_nonce(\'delete_\' . $products->post_id );

添加需要放置在函数中的操作。php或自定义插件。

您将注意到有两个add\\u操作调用。一个用于特权用户(即他们已登录),另一个用于非特权用户。如果不需要两者兼用,请删除其中一个。你可以在法典上读到更多这方面的信息。

Delete\\u Row()函数这需要放在函数中。php或自定义插件。

这是你抓到的id 我们在data ajax调用的对象。它被解析并放入POSTtype ajax调用的POST.

那你呢explode() ajax调用中发送的元素ID之外的ID(例如#delete\\u 12\\u 94f3a1e666),这将为您留下$id = array(\'delete\', 12, \'94f3a1e666\');. 因此post\\u id等于index[1].

那你呢echo 返回datasuccess ajax调用的一部分。然后通过调用“die”终止php函数。

您需要修改此代码以使其100%工作。

JS:

jQuery(document).on(\'click\', \'.delete\', function () {
    var id = this.id;
    jQuery.ajax({
        type: \'POST\',
        url: ajaxurl,
        data: {"action": "your_delete_action", "element_id": id},
        success: function (data) {
            //run stuff on success here.  You can use `data` var in the 
           //return so you could post a message.  
        }
    });
});

PHP:

function delete_row() {
    $id = explode(\'_\', sanitize_text($_POST[\'element_id\']));
    if (wp_verify_nonce($id[2], $id[0] . \'_\' . $id[1])) {
                $table = \'yourtable\';
        $wpdb->delete( $table, array( \'post_id\' => $id[1] ) );

        echo \'Deleted post\';
        die;
    } else {
        echo \'Nonce not verified\';
        die;
    }

}

add_action(\'wp_ajax_your_delete_action\', \'delete_row\');
add_action( \'wp_ajax_nopriv_your_delete_action\', \'delete_row\');

结束

相关推荐

WPDB查询-解密数据库数据

我试图使用WPDB从数据库中获取数据,但我一直在研究如何解密数据,例如。数据存储为:a:2:{i:0;s:2:“92”;i:1;s:2:“71”}我想要92&;71由于这是我的帖子ID,如何使用WPDB从DB获取该部分?到目前为止,我的代码是:$crosssells = $wpdb->get_results( \"SELECT * FROM $wpdb->postmeta WHERE _crosssell_ids != \'\' \"&#x