نريد الإنتقال الى الإحتراف
- ayoubkiass
- 2014-08-23T22:24:55+00:00
لقد شاهدت العديد من دروس برمجة قوالب وردبريس و طبقتها كلها لكن للأسف لا تقلنا الى المرحلة التالية
لذالك انا في الحاجة إلى لدروس لشرح هذه الاشياء :
-كيفية وضع عدد المشاهدات اسفل كل بوست
-عرض كل مجموعة من المواضيع بشكل مختلف مثل مايوجد في المواقع الاخبارية
-(تحميل تلقائي للمواضيع) دون الحاجة لتعدد الصفحات مثل هذا الموقع : alwadifa-maroc.com
بعيدا عن طلب
شكر خاص للاخ Adil Elsaeed على شروحاته
ربما هذا لقلة المحترفين في المجال، فأنا أيضا عانيت الكثير في البداية لأتعلم ثم وقفت ذات يوم، وقلت (لن أجد شيئا بالعربية) وبحثت بالانجليزية وواجهت صعوبة في التعلم ولكن مع الوقت تتعلم،
الآن بالنسبة لطلباتك، فكلها أمور بسيطة تستطيع تنفيذها عبر إضافات أو تخطيط بسيط للموقع،
مثلا عدد المشاهدات سيكون هكذا (مقتبس من كود لموقع عميل سابق)
سيتم الأمر عبر meta box خاص بكل تدوينة يتم زيادته مع كل زيارة للتدوينة (قمت باضافة تعليقات للكود)
اولا، الدالة التي ستحسب عدد المشاهدات
/**
* function that counts the number of views for each post, and set it as a meta box
*
*
* @param int $postID the current post ID, if not set then default to get_the_id()
*
* @uses get_post_meta()
*
* @uses delete_post_meta()
*
* @uses add_post_meta()
*
* @uses get_the_id()
*
* @return NULL
*
**/
function manara_set_post_view($postID = get_the_id() ) {
$count_key = 'views_count'; //نحدد اسم meta الذي سنستخدمه
$count = get_post_meta($postID, $count_key, true); //نحضر عدد المشاهدات الحالي
if($count==''){ //ان لم يتم مشاهدة التدوينة بعد
$count = 0; // فنقوم بتحديد عدد المشاهدات إلى 0
delete_post_meta($postID, $count_key); // ثم نقوم بحذفه
add_post_meta($postID, $count_key, '0'); // ثم نعيد تحديد meta مجددا ونحدده على 0
} else { // وفي حال كان هناك مشاهدات مسبقا
$count++; // نقوم بزيادة عدد المشاهدات مرة واحدة
update_post_meta($postID, $count_key, $count); // ونحدث الmeta بالقيمة الجديدة
} //else
}
الآن، الدالة التي ستقوم بجلب عدد المشاهدات
/**
* function that return the number of views
*
* @param int $postID the current post ID, if not set then default to get_the_id()
*
* @uses get_post_meta()
*
* @uses delete_post_meta()
*
* @uses add_post_meta()
*
* @uses get_the_id()
*
* @return int number of views
*
**/
function manara_get_post_view($postID = get_the_id() ){
$count_key = 'views_count'; //نحدد اسم meta الذي سنستخدمه
$count = get_post_meta($postID, $count_key, true); //ثم نقوم بجلب القيمة
if($count=='' || $count==0) { // نتفق إذا كانت القيمة صفرا أو تم تحديدها من قبل
delete_post_meta($postID, $count_key); // إن الشرط صحيحا، فنحذف الصندوق
add_post_meta($postID, $count_key, '0'); // ثم نعيد انشاءه ونحدد القيمة ك0
return $count; // ثم نجعل الدالة تعيد 0
}
الآن تستطيع، ليعمل الكود، علينا اولا استدعاء الدالة الأولى manara_set_post_view بحيث يتم تنفيذها كلما تمت زيارة تدوينة
هكذا (تستطيع وضع الكود في أي مكان)
<?php manara_set_post_view(); ?>
والآن لنجعلب عدد المشاهدات ونضعه في صفحة التدوينة أو الرئيسية (داخل الloop دوما) نقوم بالتالي
<?php echo manara_get_post_view() . 'مشاهدة'; ?>
لنجعل الكود أنظف وأجمل، فسنظيف دالة ثالثة، تقوم بجلب القيمة ثم المقارنة هل هي 0 أو أكثر وتطبعها إضافة إلى كلمة مشاهدة
/**
* function that echo the number of views
*
* @param int $postID the current post ID, if not set then default to get_the_id()
*
* @see manara_get_post_view() for more info
*
* @return string 'number of views'
*
**/
function manara_the_post_view($postID = get_the_id() ){
$views = manara_get_post_view($postID); //نستدعي الدالة السابقة التي تجلب عدد المشاهدات
if($count==0) { // نقوم بالمقارنة إذا كان عدد المشاهدات 0
$value = 'كن أول من يشاهد'و
}
else { // في حال كان عدد المشاهدات أكبر من واحد
$value = $views . 'مشاهدة';
}
echo $value; // نقوم بطابعة النتيجة مباشرة
}
الآن نستبدل هذه
<?php echo manara_get_post_view() . 'مشاهدة'; ?>
بهذا الكود
<?php manara_the_post_view(); ?>
وهكذا تضيف عدد المشاهدات
بالنسبة للمواضيع المختلفة
الأمر يتم إما بإعضاء كل مجموعة من الأخبار تصنيف واحد، مثلا تصنيف أخبار، تصنيف مقالات أو حسب post_format لكل مقالة، بحيث تكون تحت quote او aside ثم تقوم بcustom query لكل واحدة او حسب custom field لكل نوع، ثم سحبهم عبر custom query لكل نوع
سأقوم بإعطاء مثال للأول ومثال للثاني، أما الثالث فهو بسيط أيضا وأدعك تكتشفه لوحدك
حسب المقالات، الكود التالي
<?php $cat_id = get_cat_id('أخبار'); //أولا نقوم بسحب ID الخاصة بالتصنيف انطلاقا من اسمه ?>
<?php $custom_query = new WP_Query(array( 'cat' => $cat_id)); //سيتم الآن تنفيذ loop تحتوي على مقالات تحت هذا التصنيف فحسب ?>
<?php if($custom_query->have_posts()) : ?>
<?php while($custom_query->have_posts()) : $custom_query->the_post(); ?>
<?php //هنا ضع كود loop الذي تريده ?>
<?php endwhile; //$custom_query->have_posts() ?>
<?php endif; //$custom_query->have_posts() ?>
<?php wp_reset_postdata(); //نعيد بيانات query للصفر من أجل الاستخدام مجددا ?>
<?php $cat_id = get_cat_id('مقالات'); //الآن قم بتكرير نفس الكود فوق ولكن مع تصنيف آخر واسم آخر لل query ?>
<?php $second_custom_query = new WP_Query(array( 'cat' => $cat_id)); //مثل السابق،انت تعرف ما عليك فعله ;) ?>
الكود السابق سيصنع object جديد يحتوي على البيانات التي ستجلب التصنيفات التي تضع ضمن أخبار فحسب، ثم يعرضها، وعند الانتهاء نقوم باعادة ضبط الاعدادات من اجل الاستعمال مجددا
تستطيع جعل الكود أكثر نظافة، مثلا بتمرير كل التصنيفات التي تريدها في array ثم تنفيذ foreach
بالنسبة للكود الثاني، فهو نفس الأمر أيضا ولكن سنغير في بداية الكود حيث بدل ما نجيب حسب التصنيف، نجيب حسب post_format
وهو كالتالي
<?php $args = array(
'tax_query' => array( //هذا الخيار بمعنى نقوم بجلب مقالات تحت tax معين، وهو format
array(
'taxonomy' => 'post_format', //اسمه
'field' => 'slug', //سنجلب حسب الاسم اللطيف لها
'terms' => array( 'post-format-quote' ) //نقوم بجلب كل المقالات في format الخصة والتي هي quote
)
)
);
?>
<?php $custom_query = new WP_Query(array( $args ); //نقوم بوضع الاعدادات التي أتينا بها من فوق ايضا ?>
نفس تكملت الكود كالسابق أيضا
التحميل التلقائي يتم عبر الوصول إلى أسفل الصفحة، فتقوم الصفحة بإطلاق دالة js التي تقوم بطلب ajax حيث تطلب 6 مقالات التالية
هذه الاضافة تقوم بالامر بكل أناقة
وفي حال أردت أي شيء، لا تترد بالسؤال في المجتمع
أكثر من 70 دقيقة في كتابة الرد وتنسيقه في المحرر وهنا ، أتمنى أنه كان مفيدا D:
جزاك الله خيراً على الأفادة
شكرا اخي الكريم مع أنه 70 سطر لن يكفي لشكرك لقد شرحت كل شيئ بدقة شكرا
جزاك الله خيرا وبارك الله فيك وجعله الله في ميزان حسناتك
لسبب ما الدالة الثانية ناقصة جزء وأنا لم ألاحظه عند النسخ، وهو اعادة عدد المشاهدات في حال كان اكثر من 0
المهم ها هي الدالة مجددا
function manara_get_post_view($postID = get_the_id() ){
$count_key = 'views_count'; //نحدد اسم meta الذي سنستخدمه
$count = get_post_meta($postID, $count_key, true); //ثم نقوم بجلب القيمة
if($count=='' || $count==0) { // نتفق إذا كانت القيمة صفرا أو تم تحديدها من قبل
delete_post_meta($postID, $count_key); // إن الشرط صحيحا، فنحذف الصندوق
add_post_meta($postID, $count_key, '0'); // ثم نعيد انشاءه ونحدد القيمة ك0
return $count; // ثم نجعل الدالة تعيد 0
}
return $count; // وإلا، نعيد عدد المشاهدات
}
ايضا الدالة الثالثة فيها خطأ صغير في اسم المتغير
function manara_the_post_view($postID = get_the_id() ){
$views = manara_get_post_view($postID); //نستدعي الدالة السابقة التي تجلب عدد المشاهدات
if($views==0) { // نقوم بالمقارنة إذا كان عدد المشاهدات 0
$value = 'كن أول من يشاهد';
}
else { // في حال كان عدد المشاهدات أكبر من واحد
$value = $views . 'مشاهدة';
}
echo $value; // نقوم بطابعة النتيجة مباشرة
}
مجتمع لمناقشة وتبادل الخبرات حول ووردبريس. ناقش استراتيجيات التصميم، الإضافات، وتخصيص القوالب. شارك تجاربك وأسئلتك، وتواصل مع مطورين ومصممين آخرين.
اقرأ أيضًا
- استفسارات هامة للانتقال أو الاستمرار على وورد بريس أو بلوجر
- تقنيات قالب ووردبريس تقني IO للمواقع التقنية بطريقة احترافيه
- خيال - قالب ووردبريس إحترافي مجاني للمواقع الشخصية
- ما هو أفضل إطار عمل للـ PHP من أجل انشاء قالب ووردبريس احترافي و آمن
- قالب سينما العراق مشاهدة وتحميل الأفلام ومسلسلات مع الأضافات المدفوعة مجانا