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ファイルを正しく呼び出す方法
これが例です:
このサンプル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
)を作成して上記のコードを追加します。これでうまくいくはずです。