web-dev-qa-db-ja.com

を呼び出す方法 PHP WordpressのJavascriptからの関数

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.open()でphpファイルを呼び出して結果を取得できますが、これが正しい方法ではないことがわかります。ドメイン名を指定せずに、Wordpressのajax.open( 'path_to_php')を介して、JavaScriptコード内のphpファイルを正しく呼び出す方法

2
Sinai

これが例です:

このサンプル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');

更新:

メインプラグインファイルにPHPコードを追加します。 JavaScriptファイル(js/jquery.main.js)を作成して上記のコードを追加します。これでうまくいくはずです。

1
Ciprian