السلام عليكم ورحمة الله وبركاته
لقد قمت مؤخرًا بتطوير اضافة للوردبرس تقوم بسحب محتويات من مواقع اخرى كاليوتيوب
ومقالات من موقع articlesbase ووضعها تلقائيًا في المدونة حسب المدة الزمنية التي تحددها.
يمكن رؤية مثال على عمل الاضافة من هنا:
( رابط ) http://1inker.com/blog/
ويمكن تنزيلها من هنا:
( رابط ) http://1inker.com/plugin/download/
القسم التالي لمن يرغب ببرمجة موديولات للاضافة:
حسب رأيي افضل ما في الاضافة هو نظام الموديولات الذي يعطيها مرونة كبيرة،
الاضافة تعمل بنظام ال oop ويمكن لأي شخص اضافة موديول وصفحة له في لوحة التحكم بسهولة كبيرة وبدون الدخول في عمق النظام.
الموديولات تنقسم لنوعين:
نوع يبحث عن كلمة - keyword- في موقع معين كاليوتيوب ويأتي بنتائج عشوائية
والنوع الاخر مثل ال rss يسحب معلومات بدون البحث
كل الموديولات يجب ان تنفذ ال interface التالي:
كود PHP:
<?php
interface modInterface{
public function isSearchable();
public function hasMenu();
public function bulkPost($arr);
public function install();
public function uninstall();
}
?>
الدالة الأولى للتفريق بين نوعي الموديولات
الثانية لمعرفة اذا كان للموديول صفحة في لوحة التحكم
الثالثة وهي اهم دالة: تقوم باحضار البيانات من الموقع وادخالها إلى المدونة
اما الدالتين الاخيرتين فيتم تنفيذهما عند اضافة وازالة الموديول
لماذا؟
بعض الموديولات لها خيارات اضافية (مثل اضافة اليوتيوب لها خياري طول وعرض الفيديو)
هذا الخيارات خاصة بهذا الموديول فقط ونريد اضافتها للوحة التحكم عن طريق الدالة
add_option التي في الوردبرس(التي تضع هذه الخيارات في قاعدة البيانات) حتى نتمكن من تغيير قيمتها بسهولة.
لهذا يوجد دالتين لاضافة وازالة هذه البيانات عند الضرورة
لماذا interface?
ليست فلسفة زائدة او شيء ولكن حتى نتأكد من وجود جميع الدوال التي نحتاجها في الموديول قبل تشغيله
بالاضافة لهذا الانترفيس يوجد دالة لوحة التحكم والتي عن طريقها يمكن عمل لوحة تحكم للموديول:
كود PHP:
if (!function_exists("dummyCP")){
function dummyCP()
{
echo "<h1>module cp</h1>";
}
}
انتبه ان اسم الدالة يجب ان يكون modulenameCP
يعني اسم الموديول وبعده CP .
لا يمكن تغيير هذا الاسم لأن كل الاضافة تعمل على ال name conventions
هذا مثال على موديول للاضافة:
اسم الملف: dummy.php
كود PHP:
<?php
if (!function_exists("dummyCP")){
function dummyCP()
{
echo "<h1>module cp</h1>";
}
}
if (!class_exists("dummy")){
class dummy implements modInterface{
private $searchable = true;
private $hasMenu = true;
/**
*@param - database row array
*return - added posts' titles
**/
public function bulkPost($arr)
{
$result = array();
$title = "test";
$content = "test";
$catID = 0;
wp_post_content($title,$content,$catID);
$result[] = $title."added";
return $result;
}
public function isSearchable()
{
return $this->searchable;
}
public function hasMenu()
{
return $this->hasMenu;
}
public function install(){}
public function uninstall(){}
}
}
$dummy = new dummy();
?>
انتبه ان اسم الكلاس + اسم الدالة + تعريف الكلاس+اسم الملف لها اسماء محددة لا يمكن تغييرها
للتلخيص:
موديول اسم الملف فيه كالتالي:
dummy.php
دالة لوحة التحكم
dummyCP
اسم الكلاس
dummy
تعريف الكلاس(الكائن):
كود PHP:
$dummy = new dummy();
بانتظار ارائكم