AJAX etkin eklentileri yazmak için tercih edilen yöntem nedir?


49

AJAX çağrıları ile ilgilenmek için tercih edilen yöntemin ne olduğunu merak ediyorum. POST'u işlemek için aynı eklenti php dosyasını mı yoksa ayrı bir dosyayı mı kullanmalıyım? Hangisi daha temiz veya daha güvenli?

Yanıtlar:


47

"daha güvenli ve temiz" yolu wp_ajax, eklenti dosyanızdaki işleme işlevinizi çağırmak için wordpress ve hook ile birlikte gelen admin-ajax.php kullanmak ve çağrının bütünlüğünü kontrol etmek için wp-nonce kullanmaktır.

Örneğin:

ajax JQuery aramanız

<script type="text/javascript" >
jQuery(document).ready(function($) {

    var data = {
        action: 'ACTION_NAME',
            Whatever: '1234',
            _ajax_nonce: '<?php echo wp_create_nonce( 'my_ajax_nonce' ); ?>'

    };

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    // If you need it on a public facing page, uncomment the following line:
    // var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
    jQuery.post(ajaxurl, data, function(response) {
        alert('Got this from the server: ' + response);
    });
});
</script>

sonra eklenti dosyanıza ekleyin

//if you want only logged in users to access this function use this hook
add_action('wp_ajax_ACTION_NAME', 'my_AJAX_processing_function');

//if you want none logged in users to access this function use this hook
add_action('wp_ajax_nopriv_ACTION_NAME', 'my_AJAX_processing_function');

* Giriş yapmış kullanıcıların ve misafirlerin işinize ajax ile erişmesini istiyorsanız, iki kancayı da ekleyin. * ACTION_NAME , ajax POST'nuzdaki işlem değeriyle eşleşmelidir.

Sonra fonksiyonunda sadece isteğin geçerli bir kaynaktan geldiğinden emin ol.

function my_AJAX_processing_function(){
   check_ajax_referer('my_ajax_nonce');
   //do stuff here...
}

Bu yardımcı olur umarım


1
Bu uygulama sadece yönetici tarafı için iyi mi? Peki ya kullanıcı tarafı? Gizlemek / wp-admin / ve yönetici URL'sini değiştirmek istiyorum, bu yüzden gizli URL
isteğimi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.