将AJAX变量传递给多个WordPress插件函数

时间:2017-05-27 作者:Berzerkfar

我试图从Wordpress网站的前端获取信息,我使用ajax来实现这一点,它使我能够在我的一个插件函数中使用数据,但在我的情况下,我希望在不止一个函数中使用这些数据。

add_action( \'admin_footer\', \'my_action_javascript\' ); 

function my_action_javascript() { ?>
    <script type="text/javascript" >
    jQuery(document).ready(function($) {

        var data = {
            \'action\': \'my_action\',
            \'whatever\': 1234
        };

        jQuery.post(ajaxurl, data);
    });
    </script> <?php
}

add_action( \'wp_ajax_my_action\', \'my_action\' );

function my_action() {

    $whatever = $_POST[\'whatever\'];

}
换句话说,我需要使用$_POST[\'whatever\'] 在我的插件中的其他函数中my_action() 函数,我尝试使用PHP全局变量,但没有成功:

$whatever;
function my_action(){
    global $whatever = $_POST[\'whatever\'];
}
function my_other_function(){
   global $whatever;
   if(isset($whatever)){
       echo $whatever;
   }
}

1 个回复
最合适的回答,由SO网友:Johansson 整理而成

如果要使用全局变量,必须将其设置在函数上方的任何局部范围之外。例如:

if (isset($_POST[\'whatever\'])) {
    $variable = $_POST[\'whatever\'];
}
这将把它存储在超全局数组中。现在,使用$_GLOBALS 阵列:

function my_action(){
   $whatever = $GLOBALS[\'variable\'];
}
然而,我会有一个更简单的方法。您可以在一个函数中获取变量,然后在其中调用另一个。看看这个:

function first_func(){
    $variable = $_POST[\'whatever\'];
    // Do whatever you want here
    echo "First $variable";
    // Now call the second one
    second_func($variable);
}
function second_func($input){
    echo $input;
}
避免全局变量是一种很好的做法,因为您不知道还有什么会干扰数组。

结束