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

كيف يمكنني معرفة المنشورات الشائعة ضمن وردبرس؟

محمد اصفار

السؤال

عندي مسألة لم استطع تفديها برمجيا، وهي كالتالي:

اريد اضافة كلاس  للمواضيع الشائعة في الموقع داخل 

/*Archive.php*/

<?php while ( have_posts() ): the_post(); ?>

<li><?php echo esc_attr( get_the_title() ); ?></li>

<?php endwhile; ?>

قبل ذلك اضفت دالة للموقع تقوم بتخزين  عدد  متصفحي المقال ، لكي استطيع الحصول على المقالات الأكثر زيارة باستخدام 

    'meta_key' => 'wpb_post_views_count',
   <?php 
$popularpost = new WP_Query( array( 
   "post_type" => "news",
    'posts_per_page' => 5,
    'meta_key' => 'wpb_post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
    )
    );
 
while ( $popularpost->have_posts() ) : $popularpost->the_post(); ?>

<li><?php echo esc_attr( get_the_title() ); ?></li>
  
<?php
endwhile; 
?>

هل هنالك امكانية للتحقق مما اذا  كان  المقال  في الكود الأول  (الارشيف)  موجودا ضمن المقالات الموجودة في الكود الثاني (المقالات الأكثر زيارة)

او هل من طريقة اخرى لاضافة كلاس مميز للمواضيع الشائعة

 

شكرا

تم التعديل في بواسطة Hassan Hedr
توضيح العنوان
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يجب تحديد عتبة عدد المشاهدات التي يعتبر بعدها المنشور شائعاً، وذلك عبر جلب عدد مشاهدات للمنشورات الشائعة والمقارنة مع عدد مشاهدات المنشور الحالي،

يمكن إضافة التابع التالي الذي يجلب عتبة المشاهدات التي يعتبر عندها المنشور شائع، المثال التالي سنعتبر أول 10 منشورات هي الشائعة:

function get_popular_post_view_count_threshold(){
  $popular_posts = new WP_Query( array( 
    'post_type' => 'news',
    'offset' => 10, // يمكن تغيير القيمة
    'posts_per_page' => 1,
    'meta_key' => 'wpb_post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
    )
  );
 
 if($popularpost->have_posts()) {
  return $popular_posts->posts[0]->wpb_post_views_count;
 } 
}

نضيف المرشح التالي الذي سيضيف تلقائيًا أصناف إضافية على كل منشور بحسب شرط إذا كان شائع أم لا :

function add_popular_class_to_post( $classes ) {
  if ( $post->type === 'news' &&
       $post->wpb_post_views_count >= get_popular_post_view_count_threshold()) {
    array_push( $classes, 'popular-post' ); // نضيف صنف خاص
  }

  return $classes;
}

add_filter( 'post_class', 'add_popular_class_to_post' );

تأكد ضمن قالب جسم المنشور من إضافة الأصناف باستخدام التابع post_class حتى يتم المرور على المرشح السابق:

<div class="<?php post_class(); ?>">
...
</div>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

@Hassan Hedr

يظهر لي هذا الخطأ

 

Undefined variable: post in <b>/home/babaoghb/./wp-content/themes/news-list/functions.php</b> on line <b>715</b><br />
<br />
<b>Notice</b>:  Trying to get property 'type' of non-object in <b>/home/babaoghb/./wp-content/themes/news-list/functions.php</b> on line <b>715</b><br />
class=

 

 

@Hassan Hedr

ألا يمكن مثلا انشاء مصفوفة فيها أيديهات المقالات الشائعة ، ثم التحقق مما اذا كان id  المقال ضمن المصفوفة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 33 دقائق مضت قال محمد الرسموكي:

يظهر لي هذا الخطأ

 


Undefined variable: post in <b>/home/babaoghb/./wp-content/themes/news-list/functions.php</b> on line <b>715</b><br />
<br />
<b>Notice</b>:  Trying to get property 'type' of non-object in <b>/home/babaoghb/./wp-content/themes/news-list/functions.php</b> on line <b>715</b><br />
class=

 

 

عدل طريقة التحقق من نوع المنشور الحالي إلى التالي

if ( get_post_type(get_the_ID()) === 'news' && ...) {
 // ..
}

 

بتاريخ 34 دقائق مضت قال محمد الرسموكي:

ألا يمكن مثلا انشاء مصفوفة فيها أيديهات المقالات الشائعة ، ثم التحقق مما اذا كان id  المقال ضمن المصفوفة

نعم يمكن ذلك بكلا الطريقتين، طريقة تحديد المنشورات الشائعة عن طريق التحقق من عدد المشاهدات لكل منشور تتيح لك طريقة تحكم أفضل في اعتبار ما هي المنشورات الشائعة، لكن يمكنك تنفيذ الطريقتين 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...