it-swarm.com.ru

Как позвонить PHP функция из JavaScript в WordPress

У меня есть очень простой плагин с файлом javascript и файлом PHP. Я хочу вызвать файл PHP из моего кода JavaScript и получить вывод. Функции 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

Если я использую доменное имя, я могу вызвать php-файл в ajax.open () и получить результаты, но я знаю, что это неправильный способ сделать это. Как я могу правильно вызвать php-файл внутри моего кода javascrip через ajax.open ('path_to_php') в Wordpress без указания имени домена?

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