Add_action wp_ajax_Not正在加载插件文件WP Network

时间:2016-01-12 作者:DACrosby

我正在开发一个非常依赖AJAX调用的插件。它在WordPress的单个安装版本中运行良好,但当我将其移植到网络WP中时,我的AJAX功能停止工作(总是返回0)。

简化后,我的插件设置如下所示:

// plugin.php
/*
Plugin Name: My plugin
*/
defined( \'ABSPATH\' ) or die( \'No direct access.\' );

add_action("wp_ajax_test_ajax", "test_ajax");
add_action("wp_ajax_nopriv_test_ajax", "test_ajax");
function test_ajax() {
    echo "Works";
    die();
}

add_action( \'wp_enqueue_scripts\', \'cms_load_head_scripts2\' );
function cms_load_head_scripts2() {
    $path = get_plugin_path();

    wp_enqueue_script(\'cmsAJAX\', $path . \'js/script.js\',
                        array(\'jquery\'), \'1.98\' );
    wp_localize_script( \'cmsAJAX\', \'myAjax\', array( \'ajaxurl\' => get_admin_ajax_path()) );
}


// script.js
(function($) {
$(document).ready( function(){

    $.ajax({
        type        : "post",
        dataType    : "html",
        url         : myAjax.ajaxurl,
        data        : { \'action\' : \'test_ajax\' },
        success : function(response) {
            console.log( "success", response );
        },
        error   : function(xhr, ajaxOptions, thrownError) {
        }
    });
插件按预期工作;内容加载、函数运行等。只是wp\\U ajax\\uActions不运行。

通过测试,我确定when I place my add_actions(\'wp_ajax_ inside the theme\'s functions.php file, the calls work as expected (即使插件文件中仍有ajax调用)。我确实需要他们都在插件虽然。

我遵循了管理ajax。通过php,通过do_action(\'wp_ajax_ 呼叫-此处没有错误,它只是不运行test_ajax 行动/功能。

写了这篇文章后,我发现AJAX调用在插件中工作得很好if the plugin is activated across the entire network. 当然,只能在一个或两个网络站点上单独激活这个插件,所以我仍在试图找出在单站点对一个网络站点插件中这些ajax调用的错误。

Also

这是两个习惯get_ 我在上面使用的函数,它们只返回相应的路径。

function get_plugin_path(){     return plugin_dir_url(__FILE__); }
function get_admin_ajax_path(){ return "http://domain.com/wp-admin/admin-ajax.php"; }

2 个回复
SO网友:mj_azani

而不是使用get_admin_ajax_path() 使用self_admin_url( \'admin-ajax.php\' ) 它检索当前站点或网络的ajax地址的URL。

SO网友:Jose

如果您有多站点安装,最好使用内置的WordPress核心功能network_admin_url 检索管理ajax。php url

相关推荐

Select2 AJAX和WP查询返回全部,不筛选

所以我在这里有点困惑。我经常使用Select2/AJAX/WP\\u查询来搜索和检索默认的WP帖子类型和我自己的自定义帖子类型。在过去几年中,我构建的几乎每个站点都至少包含一个实现。但是,我目前正在一个网站上搜索自定义帖子类型的结果,它只是返回所有内容。没有发生过滤。这是一个计划工具,管理员正在为一年中的每个月制定一个计划(自定义帖子类型)。时间表的标题为“月-年”,即。\'January 2022\'.问题是,如果您搜索“一月”,例如,您将得到返回的每个存在的时间表。包括2022年2月、2021 6月等