shortcode wikipedia
- Get link
- X
- Other Apps
نعم، يمكنك إنشاء كود PHP يجلب المعلومات من صفحات ويكيبيديا ويعرضها في مقالة باستخدام شورت كود.
لتحقيق ذلك، سنحتاج إلى:
استخدام واجهة برمجة تطبيقات ويكيبيديا (API) لجلب المحتوى.
تحليل الاستجابة JSON لاستخراج المعلومات المطلوبة.
إنشاء دالة PHP تقوم بهذه المهمة.
تسجيل شورت كود في ووردبريس لاستدعاء هذه الدالة.
سنقوم بإنشاء دالة تستخدم wp_remote_get لإجراء طلب إلى واجهة برمجة تطبيقات ويكيبيديا، ثم تقوم بتحليل JSON للحصول على نص المقالة. سنقوم بتنسيق النص بشكل بسيط وإرجاعه.
ملاحظة: قد تحتاج إلى معالجة الأخطاء مثل الصفحات غير الموجودة.
هذا مثال على الكود:
نعم، يمكنك عمل كود PHP يجلب المعلومات من ويكيبيديا باستخدام شورت كود. إليك مثال متكامل:
1. كود PHP الرئيسي (ضعه في ملف functions.php الخاص بثيمك أو في بلجن مخصص)
<?php
// دالة جلب المحتوى من ويكيبيديا
function get_wikipedia_content($url) {
// جلب محتوى الصفحة
$response = wp_remote_get($url);
if (is_wp_error($response)) {
return 'خطأ في جلب البيانات من ويكيبيديا';
}
$body = wp_remote_retrieve_body($response);
// استخراج المحتوى الرئيسي
preg_match('/<div id="mw-content-text"(.*?)<\/div>/s', $body, $matches);
if (empty($matches[0])) {
return 'لم يتم العثور على المحتوى المطلوب';
}
$content = $matches[0];
// تنظيف المحتوى من العناصر غير المرغوب فيها
$content = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', '', $content);
$content = preg_replace('/<style\b[^>]*>(.*?)<\/style>/is', '', $content);
$content = preg_replace('/<div class="navbox".*?<\/div>/is', '', $content);
return $content;
}
// تسجيل الشورت كود
function wikipedia_shortcode($atts) {
$atts = shortcode_atts(
array(
'url' => '',
'lang' => 'ar'
),
$atts,
'wikipedia'
);
if (empty($atts['url'])) {
return 'يرجى تقديم رابط صفحة ويكيبيديا';
}
// التأكد من أن الرابط من ويكيبيديا
if (!preg_match('/https?:\/\/([a-z]+)\.wikipedia\.org/', $atts['url'])) {
return 'رابط غير صالح. يرجى استخدام رابط من ويكيبيديا';
}
// جلب المحتوى
$content = get_wikipedia_content($atts['url']);
return '<div class="wikipedia-content">' . $content . '</div>';
}
add_shortcode('wikipedia', 'wikipedia_shortcode');
?>2. أمثلة للاستخدام في المحرر:
[wikipedia url="https://ar.wikipedia.org/wiki/الفيزياء"] [wikipedia url="https://en.wikipedia.org/wiki/Physics" lang="en"]
3. نسخة متقدمة مع التخزين المؤقت:
<?php
function get_wikipedia_content_advanced($url) {
$transient_key = 'wiki_' . md5($url);
// التحقق من وجود نسخة مخزنة
$cached_content = get_transient($transient_key);
if ($cached_content !== false) {
return $cached_content;
}
$response = wp_remote_get($url, [
'timeout' => 30,
'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
]);
if (is_wp_error($response)) {
return 'خطأ في جلب البيانات';
}
$body = wp_remote_retrieve_body($response);
// استخراج العنوان الرئيسي
preg_match('/<h1[^>]*>(.*?)<\/h1>/s', $body, $title_matches);
// استخراج المحتوى الرئيسي
preg_match('/<div id="mw-content-text"(.*?)<div class="printfooter">/s', $body, $content_matches);
if (empty($content_matches[1])) {
return 'لم يتم العثور على المحتوى';
}
$content = $content_matches[1];
// تنظيف متقدم
$patterns = [
'/<script\b[^>]*>(.*?)<\/script>/is',
'/<style\b[^>]*>(.*?)<\/style>/is',
'/<div class="navbox".*?<\/div>/is',
'/<table[^>]*class="infobox".*?<\/table>/is',
'/<div class="reflist".*?<\/div>/is',
'/<span class="mw-editsection".*?<\/span>/is'
];
foreach ($patterns as $pattern) {
$content = preg_replace($pattern, '', $content);
}
// إضافة التنسيق
$final_content = '';
if (!empty($title_matches[1])) {
$final_content .= '<h2 class="wiki-title">' . strip_tags($title_matches[1]) . '</h2>';
}
$final_content .= '<div class="wiki-body">' . $content . '</div>';
// التخزين المؤقت لمدة ساعة
set_transient($transient_key, $final_content, HOUR_IN_SECONDS);
return $final_content;
}
function wikipedia_advanced_shortcode($atts) {
$atts = shortcode_atts([
'url' => '',
'lang' => 'ar',
'cache' => 'yes'
], $atts);
if (empty($atts['url'])) {
return '<p>يرجى تقديم رابط صحيح لصفحة ويكيبيديا</p>';
}
$content = get_wikipedia_content_advanced($atts['url']);
return '<div class="wikipedia-article">' . $content . '</div>';
}
add_shortcode('wiki', 'wikipedia_advanced_shortcode');
?>4. إضافة CSS للتنسيق (اختياري):
.wikipedia-article { direction: rtl; text-align: right; font-family: 'Traditional Arabic', serif; line-height: 1.6; } .wiki-title { color: #062c69; border-bottom: 2px solid #062c69; padding-bottom: 10px; } .wikipedia-content p { margin-bottom: 15px; } .wikipedia-content ul, .wikipedia-content ol { margin-right: 20px; }
5. نصائح للاستخدام:
الاحتياطات الأمنية:
تأكد من تحقق من المصادر دائمًا
استخدم التخزين المؤقت لتقليل الطلبات
قم بتنقية المدخلات دائمًا
للتحسين:
أضف معالجة للأخطاء
أضف خيارات تنسيق إضافية
استخدم واجهة برمجة ويكيبيديا الرسمية (API) للحصول على بيانات منظمة
مثال استخدام متقدم:
[wiki url="https://ar.wikipedia.org/wiki/العلم" cache="yes"]
هذا الكود سيمكنك من تضمين محتوى ويكيبيديا في مقالاتك بسهولة باستخدام شورت كود بسيط.
- Get link
- X
- Other Apps
Comments
Post a Comment