منذ فترة و أنا أستقبل أسئلة عبر البريد اﻹلكتروني أو من خلال التعليقات حول الطريقة التي أستعملها لوضع نجوم تقييم المقالات و كيفية إظهارها في قوقل، لهذا السبب قررت كتابة هذه التدوين التي سأحاول من خلالها شرح الطريقة التي أستعملهابالتفصيل، اﻹضافة التي أستعملها أنا التي هي إضافة WP-PostRatings.
إضافة WP-PostRatings ليست هي اﻹضافة المجانية الوحيدة التي تمكّن من وضع نجوم التقييم، لكن حسب رأيي هي أفضل إضافة في مجالها لكونها تمنح حرية كاملة في التخصيص و لا تثقل كاهل الموقع بكثرة اﻹعدادات و التنسيقات و ملفات الجافاسكربت كما هو الحال مع أغلب اﻹضافات …
تنصيب و إعداد إضافة WP-PostRatings
أول شيء نقوم به هو تنصيب اﻹضافة، بعدها نتوجه إلى التقييم => إعدادات التقييم و نقوم بإختيار صورة التقييم التي نريدها، ثم نقوم بتحديد رقم أعلى تقييم نريده لمواضيعنا و بعدها تفعيل خاصية Google Rich Snippets لكي تتمكن عناكب قوقل من أرشفة و عرض نجوم التقييمات بجانب روابط مقالاتنا في نتائج البحث.
هذه صورة لﻹعدادات التي أعتمدها أنا في موقي
باقي اﻹعدادت هي اختيارية و يمكن ﻷي واحد ضبطها حسب ذوقه و رغبته.
عرض نظام التقييم للمقالات
اﻵن وصلنا ﻷهم مرحلة و هي عرض نظام التقييمات في أسفل المقالات. في صفحة اﻹضافة على المستدع الرسمي لووردبريس، المطور يوفر لنا أكواد جاهزة ﻷي نتمكن من استعمالها و عرض التقييمات في أي مكان نريده من القالب.
مثلا لعرض التقييمات في المقالات يمكننا وضع هذا الكود داخل اللوب (Loop):
if(function_exists('the_ratings')) {
the_ratings();
}
12345 | if(function_exists('the_ratings')) { the_ratings(); } |
الكود بكل بساطة يقوم بالتحقق من وجود الوظيفة the_ratings()
و بعدها تفعيلها في القالب.
لكن، رغم بساطة الكود قد يواجه البعض، خصوصا المبتدئين في ووردبريس صعوبة في إضافته إلى قالبهم، لهذا قمت بعمل كود خاص لكي يتمكن أي شخص من إضافة التقيمات لموقعه بطريقة أبسط و أسهل.
الكود الذي عملته هو التالي:
if (function_exists('the_ratings') && !function_exists('sb_ratings') ) {
function sb_ratings($content)
{
if (is_singular('post')) {
ob_start();
?>
<div class="sb-ratings">
<h3 class="sb-ratings-title">لا تذهب دون ترك تقييمك للموضوع</h3>
<?php the_ratings();
?>
</div>
<?php
$output = ob_get_clean();
}
$content = $content.$output;
return $content;
}
function sb_ratings_styles()
{
?>
<style>
.sb-ratings { background: #E5E5E5; border: 2px solid #666666; border-radius: 5px; text-align: center; padding: 20px}
.sb-ratings-title {}
.post-ratings {}
</style>
<?php
}
add_action( 'wp_head', 'sb_ratings_styles' );
add_filter('the_content', 'sb_ratings', 10, 1);
}
123456789101112131415161718192021222324252627282930313233343536373839 | if (function_exists('the_ratings') && !function_exists('sb_ratings') ) { function sb_ratings($content) { if (is_singular('post')) { ob_start(); ?> <div class="sb-ratings"> <h3 class="sb-ratings-title">لا تذهب دون ترك تقييمك للموضوع</h3> <?php the_ratings(); ?> </div> <?php $output = ob_get_clean(); } $content = $content.$output; return $content; } function sb_ratings_styles() { ?> <style> .sb-ratings { background: #E5E5E5; border: 2px solid #666666; border-radius: 5px; text-align: center; padding: 20px} .sb-ratings-title {} .post-ratings {} </style> <?php } add_action( 'wp_head', 'sb_ratings_styles' ); add_filter('the_content', 'sb_ratings', 10, 1);} |
في اﻷول قمت بالتحقق من وجود الوظيفة the_ratings()
لتفادي حدوث خطأ إذا تعطّلت اﻹضافة ﻷي سبب، أي أن هذا الكود فقط سيعمل إذا كانت إضافة WP-PostRatings مفعّلة، و في نفس الوقت تأكدت من عدم وجود وظيفة بإسم sb_ratings()
لتفادي حدوث تظارب الوظيفة التي سأقوم بإنشائها مع وظيفة أخرى موجودة بنفس اﻹسم.
محتوى الوظيفة اﻷولى و هذفها مفهوم، في اﻷول قمت بالتحقق من ظهور التقييمات فقط في المقالات بواسطة الوظيفة is_singular()
و و بعدها وضعت التقييمات داخل div و إعطائه class
أسميته sb-ratings
لكي أتمكن من التحكم في تنسيقاته عن طريق ال css
تم وضعت عنوان للتقييمات و بعدها عرض قمت التقييمات، و في اﻷخير قمت بتخزين محتوى الوظيفة في متغيّر أسميته $output
و بعدها قمت بإضافة هذا المتغّر في آخر محتوى المقالات.
الوظيفة الثانية الهدف منها هو إضافة التنسيقات حيث يمكنك التعديل عليها حسب رغبتك.
في اﻷخير قمت بإضافة الوظيفة اﻷولة إلى فلتر the_content
و الوظيفة الثانية للخطاف wp_head
.
تغيير Schema تقييم المقالات
اﻹضافة افتراضيا تستعمل ال http://schema.org/Article و هذا شيء جيد إذا كان محتوى موقعك عبارة عن مدونة، لكن يمكنك تغيير ذلك بسهولة بإستعمال الفلتر wp_postratings_schema_itemtype
مثلا إذا كان موقعك محتواه إخباري يمكنك تغيير Article إلى NewsArticle بهذا الكود:
function wp_postratings_schema_itemtype($itemtype) {
return 'itemscope itemtype="https://schema.org/NewsArticle"';
}
add_filter('wp_postratings_schema_itemtype', 'wp_postratings_schema_itemtype');
123456 | function wp_postratings_schema_itemtype($itemtype) { return 'itemscope itemtype="https://schema.org/NewsArticle"'; }add_filter('wp_postratings_schema_itemtype', 'wp_postratings_schema_itemtype'); |
للمزيد من المعلومات حول Schema Microdata قم بزيارة مشروع قم بزيارة schema.org.
كل الأكود التي ذكرت في هذه التدوينة يجب وضعها في ملف functions.php للقالب المفعّل أو إضافتك المخصصة.
هنا أكون قد وصلت لنهاية هذه التدوينة، أتمنا أن تكون قد استفدت و إذا واجهك أي مشكل أو كان عندك أي استفسار المرجوا تركه من خلال التعليقات.
شكرا على الزيارة 🙂
Original Article