Cum să apelezi o funcție PHP din Javascript în WordPress

1 aug. 2018, 17:56:34
Vizualizări: 23.2K
Voturi: 6

Am un plugin foarte simplu cu un fișier javascript și unul PHP. Vreau să apelez fișierul PHP din codul meu javascript și să obțin rezultatul. Funcția javascript arată cam așa:

function img_upload(){

        var ajax = new XMLHttpRequest();           
        ajax.open('GET', 'http://Numele_Meu_Domain.com/wp-content/plugins/Plugin_Meu/auth.php', false);
        ajax.send();

    if (ajax.status === 200) {

      console.log(ajax.responseText);

    }

și fișierul PHP care returnează rezultatele:

<?php
$token=Get_Token();
echo $token;
function Get_Token()
{
   //Execută anumite operații
   return $token;
}
?>

ambele fișiere (auth.php și myjs.js) sunt în directorul rădăcină al plugin-ului.

/home/Numele_Meu_Utilizator/public_html/wp-content/plugins/Plugin_Meu

Dacă folosesc numele domeniului pot apela fișierul php în ajax.open() și obțin rezultatele, dar știu că aceasta nu este calea corectă de a face acest lucru. Cum pot apela fișierul php din codul meu javascript prin ajax.open('cale_catre_php') în WordPress în mod corespunzător fără a indica numele domeniului?

0
Toate răspunsurile la întrebare 1
2

Iată un exemplu:

Folosește acest cod JavaScript de exemplu:

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) {
        // Fă ceva când acțiunea este finalizată
    });

    e.preventDefault();
});

PHP (include funcția în pluginul tău, nu folosi un fișier separat):

// Include JavaScript-ul de mai sus în pluginul tău
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');

ACTUALIZARE:

Adaugă codul PHP în fișierul principal al pluginului. Creează un fișier JavaScript - js/jquery.main.js - și adaugă codul de mai sus. Asta ar trebui să rezolve problema.

1 aug. 2018 18:19:07
Comentarii

Poți să descrii puțin codurile tale? Sunt începător în lumea plugin-urilor. Am nevoie doar de un cod simplu. Unde ar trebui să adaug wp_enqueue_script, wp_localize_script?

Sinai Sinai
1 aug. 2018 18:42:58

Am actualizat răspunsul meu. Adaugă codul PHP în fișierul principal al plugin-ului. Creează un fișier JavaScript - js/jquery.main.js - și adaugă codul de mai sus. Asta ar trebui să funcționeze.

Ciprian Ciprian
1 aug. 2018 19:27:31