it-swarm.com.de

Wie rufe ich an? PHP Funktion von Javascript in Wordpress

Ich habe ein sehr einfaches Plugin mit einer Javascript-Datei und einer PHP-Datei. Ich möchte die Datei PHP aus meinem Javascript-Code aufrufen und die Ausgabe erhalten. Die Javascript-Funktionen sehen ungefähr so ​​aus:

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);

    }

und die PHP -Datei, die die Ergebnisse zurückgibt:

<?php
$token=Get_Token();
echo $token;
function Get_Token()
{
   //Do some stuff
   return $token;
}
?>

beide Dateien (auth.php und myjs.js) befinden sich im Stammverzeichnis des Plugins.

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

Wenn ich den Domainnamen benutze, kann ich die PHP-Datei in ajax.open () aufrufen und die Ergebnisse erhalten, aber ich weiß, dass dies nicht der richtige Weg ist, dies zu tun. Wie kann ich die PHP-Datei in meinem Javascrip-Code über ajax.open ('path_to_php') in Wordpress korrekt aufrufen, ohne den Domainnamen anzugeben?

2
Sinai

Hier ist ein Beispiel:

Verwenden Sie diesen JavaScript-Beispielcode:

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 (fügen Sie die Funktion in Ihr Plugin ein, verwenden Sie keine separate Datei):

// 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:

Fügen Sie den PHP Code zu Ihrer Haupt-Plugin-Datei hinzu. Erstellen Sie eine JavaScript-Datei - js/jquery.main.js - und fügen Sie den obigen Code hinzu. Das sollte den Trick machen.

1
Ciprian