क्यों व्यवस्थापक- ajax.php का उपयोग करें और यह कैसे काम करता है?


9

Json डेटा के लिए मेरा ajax कॉल इस कार्य की तरह ठीक है।

add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' );
add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' );
function prefix_load_cat_posts () {
  //get data here
}

जावास्क्रिप्ट:

var ajaxurl = 'http://'+window.location.host+'/wp-admin/admin-ajax.php';
jQuery.ajax({
    type: 'POST',
    url: ajaxurl,
    etc.

मेरे 2 सवाल हैं।

1) अपने json को किसी अलग फ़ाइल में एन्कोड करने के बजाय व्यवस्थापन-ajax.php का उपयोग क्यों करें themes/example/json.phpऔर वहां अपना डेटा एनकोड करें?

2) कैसे काम करता है admin-ajax.php? मैं उस फ़ाइल से बहुत कुछ नहीं समझता। क्या यह सभी कार्यों को लोड करता है ताकि आप उनका उपयोग करने के लिए तैयार हों?

धन्यवाद!


2
ध्यान दें, किसी भी सवाल का जवाब के बारे में बात क्यों themes/example/json.phpएक प्रमुख सुरक्षा भेद्यता विचार किया जाना चाहिए
टॉम जम्मू नॉवेल

जवाबों:


14

1) admin-ajax.phpअपने जसन को एक अलग फाइल में एन्कोड करने के बजाय क्यों इस्तेमाल करें themes/example/json.phpऔर वहां अपना डेटा एनकोड करें?

उपयोग करने का admin-ajax.phpअर्थ है कि वर्डप्रेस कोर लोड और उपलब्ध है। इसके अलावा, आपको अपनी ज़रूरत की फ़ाइलों को लोड करने की आवश्यकता होगी, जो एक जटिल प्रक्रिया है और यदि आप कोर को बहुत अच्छी तरह से नहीं जानते हैं तो विफलता की संभावना है। और, आप जावास्क्रिप्ट सुरक्षा के साथ कितने अच्छे हैं?

2) कैसे admin-ajax.phpकाम करता है ? मैं उस फ़ाइल से बहुत कुछ नहीं समझता। क्या यह सभी कार्यों को लोड करता है ताकि आप उनका उपयोग करने के लिए तैयार हों?

  1. यह वर्डप्रेस कोर को लोड करता है, जिसका अर्थ है कि आप चीजों का उपयोग कर सकते हैं जैसे $wpdb और $WP_Query। यह लाइन 25 के माध्यम से है।
  2. यह कुछ शीर्ष लेख भेजता है - लाइनें 37 - 41।
    1. एक सामग्री प्रकार हेडर
    2. ब्राउज़रों को परिणामों को कैश नहीं करने के लिए एक हेडर
    3. दिलचस्प हेडर उन लोगों द्वारा भेजे गए हैं send_nosniff_headers()
    4. और nocache_headers()
  3. admin_initहुक सक्रिय होता है।
  4. कोर कार्यों में परिभाषित किया और लाइनों 46 dynamically-- पंजीकृत हैं - 73. ये जब तक कि वे needed-- हैं कि है, जब तक वे के माध्यम से अनुरोध है कि वे पंजीकृत नहीं किया जाएगा $_GETया $_POST
  5. "दिल की धड़कन" एपीआई हुक आग - लाइन 75
  6. अनुरोध करने वाले उपयोगकर्ता की "लॉग इन" स्थिति की जाँच की जाती है और उपयुक्त प्रशासनिक या "कोई निजीकृत नहीं" हुक निकाल दिया जाता है।

आइटम # 1 और # 6 मेरे विचार में AJAX एपीआई का उपयोग करने के प्राथमिक कारण हैं। आपके पास वर्डप्रेस कोर है, जिसकी आपको लगभग निश्चित रूप से आवश्यकता है, और आपके पास वर्डप्रेस के बाकी हिस्सों के समान लॉगिन सुरक्षा प्रणाली है।


6

admin-ajax.phpवर्डप्रेस AJAX एपीआई का हिस्सा है , और हाँ, यह बैकएंड और फ्रंट दोनों से अनुरोधों को संभालता है। यहाँ मैं अपने सवाल के लिए क्या समझ रहा हूँ:

2) कैसे काम करता है admin-ajax.php?

के लिए तर्क आप यहां देख सकते हैं।

यह मानता है कि आप पहले से ही जानते हैं कि जावास्क्रिप्ट को कैसे बनाया जाता है, आदि।

जावास्क्रिप्ट टुकड़ा:

jQuery(document).ready(function($) {

    // We'll pass this variable to the PHP function example_ajax_request
    var fruit = 'Banana';

    // This does the ajax request
    $.ajax({
        url: ajaxurl,
        data: {
            'action':'example_ajax_request',
            'fruit' : fruit
        },
        success:function(data) {
            // This outputs the result of the ajax request
            console.log(data);
        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    });   

});

PHP टुकड़ा:

function example_ajax_request() {

    // The $_REQUEST contains all the data sent via ajax 
    if ( isset($_REQUEST) ) {

        $fruit = $_REQUEST['fruit'];

        // Let's take the data that was sent and do something with it
        if ( $fruit == 'Banana' ) {
            $fruit = 'Apple';
        }

        // Now we'll return it to the javascript function
        // Anything outputted will be returned in the response
        echo $fruit;

        // If you're debugging, it might be useful to see what was sent in the $_REQUEST
        // print_r($_REQUEST);

    }

    // Always die in functions echoing ajax content
   die();
}

add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );

// If you wanted to also use the function for non-logged in users (in a theme for example)
 add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' );

1) थीम / उदाहरण / json.php जैसी किसी अलग फ़ाइल में अपने जोंस को एन्कोडिंग करने के बजाय एडमिन-अजाक्स.एक्सपी का उपयोग क्यों करें और वहां अपना डेटा एनकोड करें?

यह मददगार हो सकता है। Ajax अनुरोधों के लिए कस्टम-पेज ajax.php बनाम कस्टम पेज टेम्पलेट


अरे, क्या आप इन एक्शन हुक को समझा सकते हैं 'wp_ajax_example_ajax_request' और 'wp_ajax_nopriv_example_ajax_request' मुझे कहीं भी कोई स्पष्टीकरण नहीं मिला। इसके अलावा अजाक्सर्ल क्या हल करता है? धन्यवाद
डेविड Okwii
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.