اذهب إلى المحتوى
  • 0

Admin request في WordPress

حسين محمد الباز

السؤال

Recommended Posts

  • 0

هذه ملفات أساسية في شفرة مصدر WordPress الأصلية. يتم استخدامها في النماذج (forms) لتقديم طلبات نشر (POST requests) مصدق عليها (authenticated). إذا كنت تقوم بإنشاء Theme أو Plugin، فستحتاج بالتأكيد إلى حفظ شيء ما على الخادم. يجب أن تتم عمليات الكتابة هذه بأمان باستخدام admin-post.php و admin-ajax.php.

عند إجراء طلب نشر إلى خادم، يمكن أن يؤدي الطلب إلى إعادة تحميل الصفحة، أو يمكنك البقاء على نفس الصفحة، والحصول على ردك باستخدام JavaScript.

لبدء تنفيذ طلب نشر أساسي، أنشئ نموذجًا باستخدام HTML، وعيِّن الـ action attribute على النحو التالي:

<form method="post" action="<?php echo admin_url( 'admin-post.php' ); ?>">
  <input type="text" name="theme_color" id="theme_color" required />
  <button type="submit" class="button-primary">Save</button>
</form>

<?php

add_action( 'admin_post_theme_color', 'wp_theme_color' );
function wp_theme_color() {
	// سيكون متاحاً لك هنا كل المعلومات من النموذج
	// مثلاً: يمكنك الحصول على لون الثيم وعرضه للمستخدم
	$theme_color = $_REQUEST['theme_color'];
}

بالنسبة إلى admin-ajax.php، أو طلبات الـ AJAX عموماً، فيجب عليك استخدام JavaScript + jQuery. الفكرة نفسها هي admin-post.php، ولكن مع بعض التغيرات البسيطة وهي أننا لا نريد عمل reload للصفحة عند عمل submit لنموذج الـ HTML.

أولاً، يجب عليك عمل تسجيل ملف الـ JavaScript الذي سيحتوي على كود الـ AJAX.

<?php

add_action( 'admin_enqueue_scripts', 'mywp_enqueue_scripts' );
function mywp_enqueue_scripts() {
	wp_enqueue_script(
		// هذا هو اسم الملف لنتمكن من ادخاله في الصفحات
		'my-ajax-script',
		// هذا هو مكان الملف بداخل مجلد البلجن
		plugins_url( '/js/query.js' ),
		// هنا نحن نطلب من ووردبريس ان يقوم بتحميل مكتبة
		// jQuery قبل الملف
		array( 'jquery' )
    );

	// تحميل متغيرات بداخل الجافاسكريبت
	wp_localize_script(
		// هذا اسم الملف الذي قمنا بتسجيلة فوق
		'my-ajax-script',
		// ذلك سيكون الكائن الذي سيحتوي على المتغيرات
		'ajax_object',
		array(
			// Access like: ajax_object.ajax_url
			'ajax_url' => admin_url( 'admin-ajax.php' ),
			// Access like: ajax_object.theme_color
			'theme_color' => 'Red'
        )
    );
}

وطبعاً، لا تنسى أن تمنع السلوك الإفتراضي للنموذج من داخل ملف الجافاسكريبت. ستؤدي جميع نماذج HTML إلى إعادة تحميل الصفحة ما لم يتم منعها على النحو التالي:

// File: query.js
(function( $ ) {

	$( '#form' ).submit( function(event) {
		// إمنع النموذج من القيام بعمل إعادة تحميل للصفحة
		event.preventDefault();

		//
		// أكتب باقي الكود هنا
		//
	} );
})( jQuery );

 

تم التعديل في بواسطة إسلام عبدالعزيز
تعديل كلمة
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...