我创建了一个自定义php文件,将其放在我的文件夹中。这些文件将一些数据插入到我创建的自定义表的数据库中。
require wp_path() . "/wp-load.php";
global $wpdb;
$favorite_table = $wpdb->prefix . "fav";
$wpdb->insert( $favorite_table, array( \'link\' => $_POST[\'fav_link\'], \'title\'=> $_POST[\'title\']) );
$lastid = $wpdb->insert_id;
echo $lastid;
function wp_path() {
if (strstr($_SERVER["SCRIPT_FILENAME"], "/wp-content/")) {
return preg_replace("/\\/wp-content\\/.*/", "", $_SERVER["SCRIPT_FILENAME"]);
}
return preg_replace("/\\/[^\\/]+?\\/themes\\/.*/", "", $_SERVER["SCRIPT_FILENAME"]);
}
调用此php文件的是我的主题中的jquery ajax函数:
$.post(WPURLS.theme_directory_uri+\'/favorite/fav.php\', data).done(function(data ) {
alert(data);
}).fail(function() {
});
此插入到数据库中,但在响应中不返回任何内容,数据为空。如果我在浏览器(GET)中手动粘贴URL,我可以看到显示的$lastid。
我做错了什么?我需要检索响应数据$lastid。
最合适的回答,由SO网友:Rocker Maruf 整理而成
你走错了路。这会造成困难,不是WORDPRESS标准。Wordpress有一种ajax技术来实现这一点。
从页面调用ajax
<script>
var data = {
\'action\': \'insert_data_customtable\',
\'first_name\': firstname,
\'last_name\': lastname
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
jQuery.ajax({
type: "POST",
url: ajaxurl,
dataType: "json",
data: data,
success: function(response) {
console.log(response);
///response will return that you echo in function insert_data_customtable
},
error: function(response){
alert(response);
}
});
</script>
并将其写入函数中。php
add_action("wp_ajax_nopriv_insert_data_customtable", "insert_data_customtable");
dd_action("wp_ajax_insert_data_customtable", "insert_data_customtable");
function insert_data_customtable(){
//Here is your code for insert into table
$insertid=mysql_insert_id();
echo json_encode($insertid);
die();
}