۱ احسان زارع شریف
آدرس دهی در اجکس
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۰۶ فروردین ۱۴۰۴

با سلام خدمت استاد عزیز سوالی که داشتم این بود که چرا در اینجا url به جای دیگری آدرس دهی شده است مگر نباید به همان فایل و آدرسی اشاره کرد که متد درون خود آن فایل وجود دارد 

url: '/wp-admin/admin-ajax.php',

سلام دوست عزیز!

در مورد admin-ajax.php و آدرسش:

در وردپرس، تمام درخواست‌های AJAX (چه از طرف پیشخوان وردپرس و چه از طرف بخش کاربری سایت) باید به فایل admin-ajax.php ارسال بشن. این فایل مثل یک درگاه مرکزی عمل می‌کنه و کارهای زیر رو انجام میده:

  1. احراز هویت کاربر (بررسی می‌کنه آیا کاربر اجازه دسترسی داره یا نه).
  2. فراخوانی هوک‌های وردپرس (مثل wp_ajax_* و wp_ajax_nopriv_*).
  3. بررسی امنیتی (مثل چک کردن nonce برای جلوگیری از حملات).

چرا آدرس /wp-admin/admin-ajax.php همیشه ثابته؟

  • چون وردپرس طراحی شده تا تمامی درخواست‌های AJAX از این مسیر پردازش بشن، حتی اگر متد شما در فایل دیگه‌ای قرار داشته باشه.
  • مثلاً اگر شما یک AJAX هوک در فایل theme/functions.php تعریف کنید، باز هم باید درخواست رو به admin-ajax.php بفرستید.

مثال ساده از نحوه استفاده:

 

// جاوااسکریپت (فرانت‌اند)
jQuery.ajax({
    url: '/wp-admin/admin-ajax.php', // همیشه همین آدرس
    type: 'POST',
    data: {
        action: 'my_custom_action', // اسم هوک شما
        nonce: '123456' // کد امنیتی
    },
    success: function(response) {
        console.log(response);
    }
});

 

// PHP (پس‌انداد - مثلاً در functions.php)
add_action('wp_ajax_my_custom_action', 'handle_ajax_request');
add_action('wp_ajax_nopriv_my_custom_action', 'handle_ajax_request'); // برای کاربران لاگین‌نشده
function handle_ajax_request() {
    check_ajax_referer('123456', 'nonce'); // بررسی امنیتی
    echo 'پاسخ ایجکس شما اینجاست!';
    wp_die(); // پایان درخواست
}

نتیجه‌گیری:

  • نیازی نیست آدرس رو تغییر بدید — وردپرس خودش از طریق admin-ajax.php همه چیز رو مدیریت می‌کنه.
  • این روش استاندارد وردپرسه و برای امنیت و یکپارچگی طراحی شده.

امیدوارم براتون مفید باشه! 🤝

بهنام مرادی ۲۴ فروردین ۱۴۰۴، ۰۶:۳۴