Как вызвать PHP функцию из Javascript в WordPress

1 авг. 2018 г., 17:56:34
Просмотры: 23.2K
Голосов: 6

У меня есть простой плагин с 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()
{
   //Выполнить некоторые действия
   return $token;
}
?>

оба файла (auth.php и myjs.js) находятся в корневой директории плагина.

/home/My_Username/public_html/wp-content/plugins/My_Plugin

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

0
Все ответы на вопрос 1
2

Вот пример:

Используйте этот пример кода на 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) {
        // Действия после успешного выполнения
    });

    e.preventDefault();
});

PHP (включите функцию в ваш плагин, не используйте отдельный файл):

// Подключите JavaScript выше в вашем плагине
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 авг. 2018 г. 18:19:07
Комментарии

Не могли бы вы немного подробнее описать ваш код? Я новичок в мире плагинов. Мне нужен простой код. Куда мне следует добавить wp_enqueue_script, wp_localize_script?

Sinai Sinai
1 авг. 2018 г. 18:42:58

Я обновил свой ответ. Добавьте PHP-код в основной файл вашего плагина. Создайте JavaScript-файл - js/jquery.main.js - и добавьте код выше. Этого должно быть достаточно.

Ciprian Ciprian
1 авг. 2018 г. 19:27:31