如何在WordPress中从Java调用PHP函数

时间:2018-08-01 作者:Sinai

我有一个非常简单的插件,包含一个javascript文件和一个PHP文件。我想从javascript代码中调用PHP文件并获得输出。javascript函数如下所示:

function img_upload(){

        var ajax = new XMLHttpRequest();           
        ajax.open(\'GET\', \'http://My_Domain_Name.com/wp-content/plugins/My_Plugin/auth.php\', false);
        ajax.send();

    if (ajax.status === 200) {

      console.log(ajax.responseText);

    }
以及返回结果的PHP文件:

<?php
$token=Get_Token();
echo $token;
function Get_Token()
{
   //Do some stuff
   return $token;
}
?>
这两个文件(auth.php和myjs.js)都位于插件的根目录中。

/home/My_Username/public_html/wp-content/plugins/My_Plugin
如果我使用域名,我可以在ajax中调用php文件。open()并获取结果,但我知道这不是正确的方法。如何通过ajax调用javascrip代码中的php文件。在Wordpress中正确打开(\'path\\u to\\u php\')而不指明域名?

2 个回复
SO网友:Ciprian

下面是一个示例:

使用以下示例JavaScript代码:

jQuery(document).on(\'click\', \'.some-element\', function(e){
    var ipc = jQuery(this).data(\'collection-id\');
    jQuery(\'.some-other-element\').show();

    jQuery.ajax({
        method: \'post\',
        url: ipAjaxVar.ajaxurl,
        data: {
            collection_id: ipc,
            action: \'my_function\',
        }
    }).done(function(msg) {
        // Do something when done
    });

    e.preventDefault();
});
PHP(在插件中包含函数,不要使用单独的文件):

// Include the JavaScript above in your plugin
wp_enqueue_script(\'main\', plugins_url(\'js/jquery.main.js\', __FILE__), array(\'jquery\'), \'\', true);

wp_localize_script(\'main\', \'ipAjaxVar\', array(
    \'ajaxurl\' => admin_url(\'admin-ajax.php\')
));

add_action(\'wp_ajax_my_function\', \'my_function\');

UPDATE:

将PHP代码添加到主插件文件中。创建JavaScript文件-js/jquery.main.js - 并添加上面的代码。这应该可以奏效。

SO网友:Adam Mellen

使用plugins_url() 要知道site/wp-content/plugins:

ajax.open(\'GET\', \'<?php echo plugins_url(); ?>/My_Plugin/auth.php\', false);
这将放入以下HTML代码:

ajax.open(\'GET\', \'http://my.domain.com/wp-content/plugins/My_Plugin/auth.php\', false);
如果您的文件是完整的JavaScript文件,而不是模板的一部分,则可以将JavaScript文件放入PHP文件中,如下所示:

<?php
header(\'Content-Type: application/javascript\'); //mark this PHP file as a JS file
?>
var pluginUrl = \'<?php echo plugins_url(); ?>\';

ajax.open(\'GET\', pluginUrl + \'/My_Plugin/auth.php\', false);
//.....
用名称保存此image_upload.js.php (或无论您如何命名),然后通常只包括:

wp_enqueue_script(\'image_upload\', plugins_url() . \'/My_Plugin/image_upload.js.php\');

结束