首页 > 解决方案 > 插件类中的 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;
    }

 }
}

标签: phpjqueryajaxwordpress

解决方案


上面的答案没有用。但有效的是在我的插件 init(插件的主文件)中调用该类。

function run_wps_wc() {

    $plugin = new Wps_Wc();
    $plugin->run();

    $sync = new Wps_Wc_Sync();

}

run_wps_wc();

推荐阅读