Javascript 在新的Wordpress PHP文件中访问$wpdb;需要wp load.php“;不起作用
好吧,我对在WordPress的新PHP文件中访问$wpdb感到非常失望。现在,我已经通读了所有我能找到的关于这个情况的答案,他们都说我需要做的就是在我的php文件顶部添加wp-load.php,它使用$wpdb,应该可以工作。我已经做到了。。。然而,它仍然不起作用。为了确保我没有做任何愚蠢的事情,我将这两个文件全部包括在内。这是我的密码: main-admin.php:Javascript 在新的Wordpress PHP文件中访问$wpdb;需要wp load.php“;不起作用,javascript,php,jquery,wordpress,Javascript,Php,Jquery,Wordpress,好吧,我对在WordPress的新PHP文件中访问$wpdb感到非常失望。现在,我已经通读了所有我能找到的关于这个情况的答案,他们都说我需要做的就是在我的php文件顶部添加wp-load.php,它使用$wpdb,应该可以工作。我已经做到了。。。然而,它仍然不起作用。为了确保我没有做任何愚蠢的事情,我将这两个文件全部包括在内。这是我的密码: main-admin.php: <?php function my_plugin_menu(){ add_menu_p
<?php
function my_plugin_menu(){
add_menu_page('my System', 'my System','administrator', 'my-plugin.php', 'my_plugin_action', plugins_url('my.png', __FILE__));
}
function my_plugin_action(){
?>
<form id="createItemForm" method="post">
<br/><br/>Create New Item
<table><tr>
<td>Enter Item Name:</td><td><input type="text" name="itemName" id="itemName"></td></tr><br><tr>
<td>Enter Item Value: </td><td><input type="text" name="itemValue" id="itemValue"></td></tr><br><tr>
<td><input type="submit" class="button button-primary" id="specialSubmit2" value="Create Item"></td></tr></table>
</form>
<script>
jQuery(function() {
jQuery('#createItemForm').submit(function(e){
e.preventDefault();
var itemName = jQuery( "input[id='itemName']" ).val();
var itemValue = jQuery("input[id='itemValue']").val();
alert(itemName + " " + itemValue);//Test that it works, it does
jQuery.ajax({
type: "POST",
url: "../path/to/submit.php",
data:{ name: itemName, value: itemValue },
success: function(data){
alert(data);
},
error: function (req, textStatus, thrownError) {
console.log(req.responseText);
}
});
});
});
</script>
<?php
}
?>
创建新项目
输入项目名称:
输入项目值:
jQuery(函数(){
jQuery('#createItemForm').submit(函数(e){
e、 预防默认值();
var itemName=jQuery(“输入[id='itemName']”).val();
var itemValue=jQuery(“输入[id='itemValue']”).val();
警报(itemName+“”+itemValue);//测试它是否有效
jQuery.ajax({
类型:“POST”,
url:“../path/to/submit.php”,
数据:{name:itemName,value:itemValue},
成功:功能(数据){
警报(数据);
},
错误:函数(req、textStatus、thrownError){
控制台日志(请求响应文本);
}
});
});
});
submit.php(在同一文件夹中):
然而,它所做的只是返回一个500错误,而不是一个未连接的“false”。应该注意的是,main-admin.php文件本身并不是核心WordPress插件php文件(该主文件可以访问$wpdb而没有任何问题)。相反,main-admin.php和submit.php都是我在WordPress插件的/admin子文件夹中创建的新php文件。main-admin.php表单显示为Wordpress中我的仪表板菜单的一部分;它是从主文件调用的
我还是一个Wordpress的初学者,所以也许我错过了一些非常愚蠢的东西
谢谢你的帮助 如果你想在Wordpress的前端或后端添加你自己的自定义功能,可以考虑创建你自己的自定义插件 无论插件有多简单(cf Hello Dolly),它都是最好的方法,因为它保持了东西的便携性,并使您能够以标准化的方式访问$wpdb等
据我所知,您希望向Wordpress管理员添加一个表单。您可以通过使用添加菜单页面()创建自己的管理页面来实现这一点。抱歉,回答了!您必须非常小心使用wp-load.php include路由。我犯了一个错误,所以它找不到:)我认为我是愚蠢的 首先,您应该确保在wp-config.php中正确调试了所有内容
define('WP_DEBUG', true);
define( 'WP_DEBUG_DISPLAY', true );
define('WP_DEBUG_LOG', true);
调试信息最终显示在wp content/debug.log中
如果您正在对php进行直接ajax调用,则应确保目录正确,并防止访问非ajax调用
require_once("../../../wp-load.php");
/* AJAX check */
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die("Invalid request - please press your back key");
}
如果在此之后无法找出错误所在,请从调试日志中发布错误,如果失败,请检查php错误。日志如果不打开调试并定期检查日志,您会发现这种情况经常发生:)如果您可以获得像phpstorm这样的全服务IDE,您会发现它会告诉您在您尝试运行代码之前无法加载文件。
require_once("../../../wp-load.php");
/* AJAX check */
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die("Invalid request - please press your back key");
}