تعيين الصور البارزة تلقائيا لووردبريس بدون حقل الخصائص

آخر تحديث 30 ديسمبر 2016بواسطة - wait... مشاهدة/ 30 تعليق
تعيين الصور البارزة تلقائيا لووردبريس بدون حقل الخصائص

السلام عليكم ورحمة الله وبركاته

اضافة الصور البارزة الى المقالات في الرئيسية قد تكون مرهقة باستعمال حقل الخصائص لجميع المقالات مثلا اذا كانت لديك العديد من المقالات فستضطر الى اضافة حقل جديد لكل مقالة وهذا سيحتاج منك مجهود جبار ولكن دائما ما تكون هناك حلول بالنسبة لهذه المشاكل. مع القليل من البحث وجدت حل بسيط

كل عام و انتم بخير بمناسبة حلول شهر رمضان المبارك أعاده الله عليكم بالخير واليمن والبركات ونتمنى لكم دوام الصحة والعافية – تهنئة سنة 2011

تم تحديث الشرح هذا الشرح لانه في القوالب القديمة كان يجب تعين الصورة البارزة من حقل الخصائص لكن الان اصبحت الامور اسهل من السابق على العموم قمت باضافة هاك جديد للقيام بهذه العملية عوض الكود القديم

متطلبات تعين الصورة البارزة

يجب التاكد من ان القالب الذي تستعمله يدعم الصور البارزة وهناك طريقتين لاستعمالها :

  1. استعمال ميزة “الصور البارزة” فى وورد برس 2.9
  2. كيف تعرض الصورة البارزة بواسطة TimThumb

تعيين الصور البارزة تلقائيا

هذه الطريقة تعتمد على اول صورة مرفقة مع المقالة يتم استعمالها كصورة بارزة للمقالة ولكي تعمل هذه الطريقة يجب عليك اضافة الكود ادناه الى ملف خصائص القالب functions.php

function get_attachment_id_from_src($image_src) {
		global $wpdb;
		$query = "SELECT ID FROM {$wpdb->posts} WHERE guid='$image_src'";
		$id = $wpdb->get_var($query);
		return $id;
}
function autoset_featured() {
	global $post;
	$postsetid = get_the_ID();
	$already_has_thumb = has_post_thumbnail($post->ID);
	$default = 'http://link-to-image';
	
	if (!$already_has_thumb)  {
		$attached_image = get_children( 'post_type=attachment&post_mime_type=image&post_parent='.$postsetid );
		if ($attached_image) {
			foreach ($attached_image as $attachment_id => $attachment) {
				set_post_thumbnail($post->ID, $attachment_id);
			}
		} else {
			set_post_thumbnail($post->ID, get_attachment_id_from_src(get_attachment_id_from_src($default)));
		}
	}
}
add_action('the_post', 'autoset_featured');

يجب انت تنتبه لشيء الصورة الافتراضية للمقالة يجب ان تقوم بادارجها في المتغير “default” في السطر 11 لكي يتم عرضها في حالة لم تتوفر اي صورة بارزة

الطريقة القديمة

قم بفتح ملف خصائص القالب functions.php لكي نضيف الهاك بداخله واذا لم يكن لديك ملف خصائص قم بانشاء واحد جديد بعدها قم بلصق الكود  الموجود بالاسفل. هذا الهاك يقوم باخد رابط اول صورة في تدوينتك واستعمالها كصورة مصغرة

function getImage($num) {
	global $more;
	$more 		= 1;
	$content 	= get_the_content();
	$count 		= substr_count($content, '<img');
	$start 		= 0;
	for($i=1;$i<=$count;$i++) {
		$imgBeg = strpos($content, '<img', $start);
		$post = substr($content, $imgBeg);
		$imgEnd = strpos($post, '>');
		$postOutput = substr($post, 0, $imgEnd+1);
		$image[$i] = $postOutput;
		$start=$imgEnd+1;

		$cleanF = strpos($image[$num],'src="')+5;
		$cleanB = strpos($image[$num],'"',$cleanF)-$cleanF;
		$imgThumb = substr($image[$num],$cleanF,$cleanB);
	}
	if(stristr($image[$num],'<img')) { 
		echo $imgThumb; 
	}
	$more = 0;
}

اضافة كود مصغرات الصور

هنا سنقوم بادراج الكود الذي سيعرض الصور المصغرة في الصفحة الرئيسية. افتح ملف Index.php او home.php على حسب ملفات القالب يجب ادراج الكود داخل the_loop لكي يتم عرضه بشكل جيد بدون مشاكل ويستحسن ان تضعه فوق the_content وهذا الكود

<div class="thumbnail">
	<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
		<img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php getImage('1'); ?>&w=150&h=150&zc=1">
	</a>
</div>

هذا الكود سيقوم بانشاء صورة بمقاس 150×150 بيكسل اذا اردت تغير المقاس فما عليك سوى تغيير ‘w’ و ‘h’ من الكود يرجى مراجعة التدوينة كيف تضع مصغرات الصور و سكريبت TimThumb لانه يجب انشاء مجلد cache داخل مجلد القالب واعطائه الصريح 777 او 755 احسن في حالة لم تظهر الصور

اضافة تنسيق لملف الاستايل

هنا يجب عليك اضافة تنسيق لملف الاستايل لعرض الصورة في المكان الذي تريد والتنسيق الذي تحب وهذا كود بسيط لطريقة العرض

.thumbnail a:link, 
.thumbnail a:visited {
	display:block; 
	float:left; 
	padding:5px; 
	background:#e2e2e2; 
	width:150px; 
	height:150px; 
	margin:5px 5px 0 0;
}
.thumbnail a:hover, 
.thumbnail a:active {
	background:#C4C4C4;
}

نهاية الارسال 😀

مميزات هذه الطريقة انك لن تحتاج لرفع المزيد من الصور ولن تستعمل الحقول الخاصة. اذا كان هناك اي استفسار يرجى وضع تعليق ؟ ولا تنسى الاشتراك في قائمتنا البريدية ولك جزيل الشكر

تعيين الصور البارزة تلقائيا لووردبريس بدون حقل الخصائص بواسطة مجلة ووردبريس, يمكنك نقل ومشاركة التدوينة مع ذكر المصدر الأصلي للموضوع ، مع رابطه, التدوينة مرخصة بموجب المشاع الابداعي Creative Commons A-NC-SA 3.0.
2011-08-06T23:43:21+00:00
2016-12-30T17:04:32+00:00

التعليقات30 تعليق

  • سائد

    بارك الله فيك
    موضوع جد مفيد فيما يخص مصغرات الصور في الوورد بريس

    • admin

      الله يبارك فيك يا أستاذ سائد

  • راضية

    جميـــل 🙂
    تسلم

  • رضا الصنهاجي

    جزاك الله خيرا أخي
    بالفعل كنت محتاج لشرح مثل هذا
    بوركت

  • عبده هوست

    هذه الضافة تطلب ان تحدد الصوره البرزه ام تاخذ اول صوره من كل تدوينه دون تحديد

    ارجو الرد

    • معاذ

      تاخذ اول صوره من كل تدوينه دون تحديد

  • عبده هوست

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

    • معاذ

      ان شاء الله اخي العزيز

  • ملف dll

    جزاك الله أخي معاذ علي الشرح الراقي
    لي سؤال: أنا بالفعل أستخدم سكربت TimThumb لعمل المصغرات
    وأستعمل أضافة WordPress Snap لعمل لقطات للمواقع screenshot تلقائيا
    ولكن السكربت لا يقوم بعض الصور كمصغرات في الصفحة الرئيسية فهي من حل ؟

    ولا قدر الله إذا لم يوجد حل
    في حالة أستخدام السكربت بمفردة فهو يقوم يعرضها في الصفحة الرئيسية
    لكنة يعرض أول صورة في الموضوع كمصغرة في الصفحة الرئيسية
    وأنا أريد أن أتحكم في الصورة التي تضهر في الصفحة الرئيسية فكيف ذلك ؟؟

    • معاذ

      العفو اخي العزيز
      بالنسبة للاضافة التي ذكرت لم اجربها من قبل ولكن قمت باقائ نظرة عليها اليست اضافة تستعمل shortcodes ؟ ولازم تعرف اذا حبيت تستعمل صور خارجية اي غير مرفوعة على سيرفرك يجب عليك ادراج هذه المواقع في سكريبت timthumb

      بالنسبة لسكريبت فيمكنك التحكم في الصورة التي ستعرض بواسطة الحقول الخاصة
      لكن يجب عليك مراجعة التدوينة الخاصة بطريقة عرض مصغرات الصور بواسطة timthumb لكي تعرف الطريقة

  • ibrahim

    يعطيك العافيه يامعاذ على المواضيع المميزه

    ولكن للاسف من امس احاول ولا ركبت معي تمام , وعندي شويه اسئله اعتقد هي السبب في ان الطريقه ما نفعت

    اولا القالب اللي استخدمه alltuts

    ثانيا , الاكواد احترت وين اضيفهم يعني اضيفهم اي مكان , انا من خلال تجربتي كنت احط الاكواد اخر شي في صفحه خصائص القالب وملف الاستايل

    ثالثا , بخصوص الكود اللي احطه في index ماحصلت ذا لوب ولا ذا كنتنت فحطيته اخر شي في الصفحه مثل بقيه الاكواد

    وما نسيت انشى ملف الكاش واعطيته تصريح 755 ولا نفع وخليته 777 ونفس الشي 🙁 , وطبعا اكيد كنت مركب السكربت timthumb في مجلد alltuts

    ياليت تقولي يامعاذ مكان اضافه الاكواد وين

  • ibrahim

    الحمدلله لقيت اضافة سهلت على الموضوع كله بضغطه وحده قدرت اظهر المصغرات تلقائي

    شكرا مره اخرى معاذ

    • معاذ

      اسف اخي العزيز على التاخير انت تعرف هذه ايام العيد وانا متلخبط من الاخر
      كنت ابي اشرح لك كيف تعمل للقالب بس انت لقيت حل اخر
      واذا حابب ممكن اضيف لك الطريقة مو مشكلة
      المهم الطريقة ربما استعملت اضافة Auto Post Thumbnail
      و اذا كانت هي بطبيعة الحال راح تشتغل معاك لان قالب alltuts يدعم مصغرات الصور

  • ibrahim

    بالضبط اخوي معاذ هذا هو اسم الاضافة اللي انت كتبته

    ولا يهمك , وشكرا مره اخرى على هالمدونات المفيدة 🙂

    • معاذ

      العفو اخي العزيز
      على فكرة اخي ابراهيم الشرح الذي وضعت ينطبق على القوالب التي لا تدعم مصغرات الصور بشكل عام

  • karim

    لو سمحت بالنسبة لملف timthumb.php فهو بيستخدم دالة tempnam .. و الدالة دى خطيرة .. و بعضض السيرفيرات بتمنعها .. فهل يمكن وضع الملف .. و استبدال الدالة بدالة اخرى امنة ؟؟

    • معاذ

      اخي ممكن تراسل مبرمج السكريبت ليس لدي خبرة كبيرة في php مع العلم ان السكريبت تم تحديثها اكتر من مرة يعني لو كان يشكل خطورة على السيرفر فلن يستعمله احد واغلب المواقع تفضل استعماله

  • karim

    شكرا اخ معاذ على ردك .. انا بالفعل بقالى اسبوع بحاول اقنع شركة الاستضافة .. انها مش خطيرة بدليل ان الاسكربت متعدل عليه اكثر من مرة !!

    • معاذ

      العفو اخي العزيز
      والله يعينك مع تلك الاستضافات التعابنة والحمد لله اني لم اتعامل مع اي استضافة منهم Hostgator ولا اروع

  • اسامة

    يا اخي ما اقول لك الا بارك الله فيك

    فعلا استفدت كثيرا من هده الطريقة

    • معاذ

      الله يبارك فيك اخي العزيز

  • اسامة

    اخي معاد الطريقة نجحت معي لكن المشكلة الصور لا تظهر الا ادا كانت مرفوعة على الموقع نفسوا

    يعني لا تظهر ان رفعتها على موقع اخر لرفع الصور

    • معاذ

      خليها لبكرة انا تعبان الحين بكرة اضعك لك الطريقة

  • اسامة

    اوكي اخي الكريم

    في انتظارك

    • معاذ

      عذرا على التاخير اخي العزيز
      في السطر 124 ستجد

      if(! isset($ALLOWED_SITES)){

      اضف المواقع التي تود استعمال الصور منها
      يستحسن تضيف النطاق بشكل التالي :
      mwordpress.net
      بدون www
      هذا في حالة كنت تود استعمال فقط بعض المواقع اما في حالة العكس اي تستعمل اي صورة خارجية فما عليك سوى تغيير قيمة ALLOW_ALL_EXTERNAL_SITES الى TRUE
      في السطر 33
      هذه التعديلات بخصوص ملف timthumb.php

  • اسامة

    تمام نجحت

    وظهرت مشكلة اخرى الا وهي الصور التي تظهر في الرئيسية لا تظهر في التصنيفات او Catégories

    • معاذ

      اخي العزيز لا تنسى تعدل ملف archive.php ايضا
      باستعمال نفس الطريقة التي في الشرح

  • أنس

    للتنبيه فانه كان من قبل قد تم اكتشاف ثغرة في TimThumb التي ادت الى اختراق العديد من المواقع التي تعمل على نظام ووردبرس

    شخصيا لا ادري ان كان قد صدر تحديث لـ TimThumb مؤخرا وصحح الخلل الامني، ان كنت قد سمعت به وانت على علم بذلك فهذا الامر جيد وان كان العكس فان اردت سازودك بمعلومات اكثر

    • معاذ

      ادري اخي بس النسخة التي تتحدث عنها قديمة جدا وقد اصدرت نسخة جديدة وبمميزات احسن من الاول
      انا وضعت رابط للسكريبت المحدث وهو موجود في مكتبة جوجل لسكريبتات

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


شروط التعليق :

1 - المرجوا الابتعاد عن كتابة تعليقات بنمط (يعطيك العافية)، (روعة)، (ممتاز)، (مشكوووور)، (ابداع).

2 - زاوية التعليقات هي جزء مكمّل للموضوع الذي قرأته للتو. حاول أن تحصر تعليقك في صلب الموضوع حتى نستثمر هذا التعليق لكسب المزيد من الفائدة سواءً عن طريق مناقشة الموضوع أو عن طريق إضافة معلومات مكمّلة أو إبداء ملاحظات أخرى في نفس السياق.

معاذ أشملي مشرف موقع (212) 689-383-644 المغرب webmaster@mwordpress.net