web-dev-qa-db-fra.com

Comment appeler un PHP fonction de Javascript dans Wordpress

J'ai un plugin très simple avec un fichier javascript et un fichier PHP. Je souhaite appeler le fichier PHP à partir de mon code javascript et obtenir le résultat. Les fonctions javascript ressemblent à ceci:

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

    }

et le fichier PHP qui renvoie les résultats:

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

les deux fichiers (auth.php et myjs.js) se trouvent dans le répertoire racine du plugin.

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

Si j'utilise le nom de domaine, je peux appeler le fichier php dans ajax.open () et obtenir les résultats, mais je sais que ce n'est pas la bonne façon de le faire. Comment appeler le fichier php dans mon code javascrip via ajax.open ('path_to_php') correctement dans Wordpress sans indiquer le nom de domaine?

2
Sinai

Voici un exemple:

Utilisez cet exemple de code 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 (inclure la fonction dans votre plugin, ne pas utiliser de fichier séparé):

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

METTRE À JOUR:

Ajoutez le code PHP à votre fichier de plugin principal. Créez un fichier JavaScript - js/jquery.main.js - et ajoutez le code ci-dessus. Cela devrait faire l'affaire.

1
Ciprian