Theme
Primary Color

حماية REST Endpoint بصلاحية المستخدم

تحديد permission_callback بيفصل السماح بالوصول عن منطق إرجاع البيانات

تجهيز المثال

أنشئ مجلد ezl-demo-13 داخل wp-content/plugins في نسخة WordPress للتجربة ثم ضع ملف الإضافة التالي بداخله وفعلها من لوحة التحكم

كود الإضافة

<?php
/*
Plugin Name: Academy Demo 13
*/

if (!defined("ABSPATH")) { exit; }

add_action('rest_api_init', function () {
    register_rest_route('ezl-demo/v1', '/draft-count', [
        'methods' => 'GET',
        'permission_callback' => function () {
            return current_user_can('manage_options');
        },
        'callback' => function () {
            return rest_ensure_response(['drafts' => (int) wp_count_posts('post')->draft]);
        },
    ]);
});

طريقة التجربة والنتيجة

طلب /wp-json/ezl-demo/v1/draft-count بدون مصادقة بيرفض الوصول وطلب مصادق بحساب إداري بيرجع العدد

ملحوظة

مع مصادقة Cookies ابعت REST Nonce صالح في X-WP-Nonce وتسجيل الدخول وحده مش كفاية لطلب REST بالطريقة دي

wordpress شرح