অ্যাডমিন- ajax.php কেন ব্যবহার করবেন এবং এটি কীভাবে কাজ করে?


9

জেসন ডেটার জন্য আমার এজ্যাক্স কলটি এই ফাংশনগুলির মতো ঠিক কাজ করে ph

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) কেন আলাদাভাবে আপনার জসনকে এনকোডিংয়ের পরিবর্তে অ্যাডমিন-অজ্যাক্স.এফপি ব্যবহার করবেন themes/example/json.phpএবং সেখানে আপনার ডেটা এনকোড করবেন?

2) অ্যাডমিন- 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 টি এজ্যাক্স এপিআই ব্যবহার করার প্রাথমিক কারণ। আপনার প্রায়শই প্রয়োজনীয় ওয়ার্ডপ্রেস কোর রয়েছে এবং আপনার অন্যান্য ওয়ার্ডপ্রেসের মতো একই লগইন সুরক্ষা ব্যবস্থা রয়েছে।


6

admin-ajax.phpওয়ার্ডপ্রেস AJAX এপিআই এর অংশ , এবং হ্যাঁ, এটি ব্যাকএন্ড এবং সামনে উভয় থেকে অনুরোধগুলি হ্যান্ডেল করে। আপনার প্রশ্নটির জন্য আমি কী খুঁজে বের করেছি তা হ'ল:

2) অ্যাডমিন- 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);
        }
    });   

});

পিএইচপি পিস:

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 এর মতো পৃথক ফাইলে আপনার জসনকে এনকোড করার পরিবর্তে অ্যাডমিন-অজ্যাক্স.এফপি ব্যবহার করবেন এবং সেখানে আপনার ডেটা এনকোড করবেন?

এই সহায়ক হতে পারে। অ্যাডাক্স-অজ্যাক্স.এফপি বনাম কাস্টম পৃষ্ঠা টেম্পলেট অ্যাজাক্স অনুরোধগুলির জন্য


আরে, আপনি কি এই পদক্ষেপের হুক 'wp_ajax_example_ajax_request' এবং 'wp_ajax_nopriv_example_ajax_request' ব্যাখ্যা করতে পারেন আমি কোথাও কোনও ব্যাখ্যা পাই না। এছাড়াও আজাকুরল কীসের সাথে সংকল্প করে? ধন্যবাদ
ডেভিড ওকউই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.