php - 插件类中的 Wordpress ajax admin-ajax.php 400
问题描述
我试图在我的插件类中调用一个 ajax 函数。但控制台显示 400 错误url/wp-admin/admin-ajax.php
我尝试在构造函数和函数中添加 ajax 钩子(如此处所示),但它们都不起作用。但是在类之外,PHP ajax 函数按预期工作。
(我对插件开发和 OOP 完全陌生 .. 所以如果需要,请分享一些最佳实践)
class Wps_Wc_Sync {
public function get_wc_products() {
add_action( 'wp_ajax_nopriv_parseCsvAjax', array($this, 'wps_ajax_parseCsvAjax') );
add_action( 'wp_ajax_parseCsvAjax', array($this, 'wps_ajax_parseCsvAjax') );
?>
<script>
jQuery( document ).ready(function($) {
console.log('ajax');
parseCsvAjax(0);
function parseCsvAjax(lastfile = 0) {
$.ajax({
type: "POST",
dataType: 'json',
url: '/wp-admin/admin-ajax.php',
data: {
action: 'parseCsvAjax',
lastfile: lastfile,
},
success: function (data) {
console.log(data);
},
error: function (jqXHT, textStatus, errorThrown) {console.log('Error');}
});
}
});
</script>
<?php
public function wps_ajax_parseCsvAjax($lastfile = 0) {
echo 'testAJAX1';
exit();
return true;
}
}
}
解决方案
上面的答案没有用。但有效的是在我的插件 init(插件的主文件)中调用该类。
function run_wps_wc() {
$plugin = new Wps_Wc();
$plugin->run();
$sync = new Wps_Wc_Sync();
}
run_wps_wc();
推荐阅读
- mysql - 在 MySQL 查询中使用 match 转义 %
- javascript - 如何在 HTML Canvas 中进行 scaleToFill 转换后从图像重新计算 BoundingBox 坐标
- javascript - 由合并面构成的剪裁几何体,模板盖面未正确对齐
- c++ - 如何在 gtkmm 的信号处理程序中获取信号小部件?
- c# - 锁对象数组可用于保证对 MyClassArray 的线程安全访问?
- emacs - 从 org-capture 中获取当前缓冲区目录
- google-maps - 用于导航自定义路线的 Google Maps API
- python - 使用python将数据框转换为json
- python - Pygame图像加载找不到图像
- amazon-mws - 有没有办法使用供应商帐户注册为亚马逊 SP-API 的开发人员?