ووردبريس get_posts: كيفية استخدام وظيفة PHP المفيدة هذه لبناء قوائم المنشورات

A VPN is an essential component of IT security, whether you’re just starting a business or are already up and running. Most business interactions and transactions happen online and VPN

وورد بريس get_postsهي وظيفة قوية تسمح للمطورين باسترداد أجزاء من المحتوى من قاعدة بيانات وورد بريس . يمكنك تحديد المنشورات والصفحات وأنواع المنشورات المخصصة التي تبحث عنها بأدق التفاصيل ، والحصول على مجموعة النتائج المخصصة الخاصة بك ، ثم تصفية العناصر وترتيبها مثل PHP / MySQL ninja.

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

استخدام وورد بريس get_postsعملية من خطوتين:

أولاً ، عليك بناء استعلامك المخصص. في الواقع ، لن يبدو مثل استعلام MySQL ، ولن تكتب أي SELECTعبارة. تحتاج فقط إلى تحديد مجموعة من المعلمات وتمريرها إلى get_postsالوظيفة. يقوم وورد بريس بتحويل هذه المصفوفة إلى استعلام MySQL حقيقي وآمن ، وتشغيله على قاعدة البيانات ، وإرجاع مجموعة من المنشورات.

ثانيًا ، عليك اجتياز مجموعة النتائج المعادة بواسطة get_postsدورة foreach.

ومع ذلك ، في هذا المنشور ، سوف نتعمق أولاً في المفاهيم الأساسية المذكورة أعلاه ، وتحديدًا كيفية get_postsالعمل ، وكيفية إنشاء استعلام مخصص ، وكيفية إظهار البيانات على الموقع الأمامي.

بعد ذلك ، سأقدم مثالًا حقيقيًا مع مقتطف من التعليمات البرمجية يمكنك الحصول عليه وتحريره واستخدامه في بيئة التدريج الخاصة بك للاختبارات والتطوير.

ملاحظة: عادة ما نفرق بين المنشورات والصفحات وأنواع المنشورات المخصصة. في هذه المقالة ، نستخدم مصطلح “منشورات” لمنشورات المدونة العادية وكذلك للصفحات وأنواع المنشورات المخصصة . يتم تخزين جميع أنواع المنشورات هذه في جدول “wp_posts” بقاعدة البيانات. يكمن الاختلاف الرئيسي بين أنواع المنشورات في قيمة الحقل “نوع_البريد” . من منظور المطور ، تعد المنشورات والصفحات وأنواع المنشورات المخصصة جميعها منشورات .

مقدمة عن وظيفة get_posts في وورد بريس

يصف الدستور على get_postsوظيفة على النحو التالي:

استرداد مصفوفة من أحدث المنشورات ، أو المنشورات المطابقة للمعايير المحددة.

يمكننا استخدام get_postsهذه الطريقة:

$args = array(
	'numberposts'	=> 20,
	'category'		=> 4
);
$my_posts = get_posts( $args );

if( ! empty( $my_posts ) ){
	$output = '<ul>';
	foreach ( $my_posts as $p ){
		$output .= '<li><a href="' . get_permalink( $p->ID ) . '">' 
		. $p->post_title . '</a></li>';
	}
	$output .= '<ul>';
}

تقوم الوظيفة المذكورة أعلاه باسترداد آخر 20 مشاركة مدونة في الفئة المحددة (افتراضيًا ‘post_type’هي ‘post’) وتعيد مجموعة من $postالكائنات. يمكنك التكرار عبر المصفوفة لعرض المشاركات على الشاشة. إنه سهل جدًا ، أليس كذلك؟

get_posts يستخدمWP_Query لاسترداد عناصر المنشور ، ويحتفظ بمصفوفة من نفس المعلمات المتاحة في WP_Query(مع استثناءات قليلة). لذلك لدينا قائمة ضخمة من المتغيرات التي يمكننا استخدامها لبناء استعلاماتنا المخصصة. تم تجميع هذه المعلمات في الفئات الـ 15 التالية :

معلمات المؤلف

معلمات الفئة

معلمات العلامة

معلمات التصنيف

معلمات البحث

معامِلات النشر والصفحة

معلمات كلمة المرور

معلمات نوع المنشور

النظام والنظام عن طريق المعلمات

معلمات التاريخ

معلمات الحقل المخصص (ما بعد التعريف)

معلمات الإذن

معلمات نوع Mime

معلمات التخزين المؤقت

معامِل حقول الإرجاع

يمكن أن يمنحك إلقاء نظرة سريعة على القائمة أعلاه فكرة عن مجموعة متنوعة من الاستعلامات المخصصة التي يمكنك إنشاؤها وتشغيلها مقابل قاعدة بيانات وورد بريس. لذلك ، دعنا نتعمق في معامِلات الاستعلام ونبدأ في بناء قوائم منشوراتنا.

كيفية إنشاء استعلامات باستخدام وورد بريس get_posts

ترتبط كل فئة من المعلمات بنفس قطعة المعلومات. على سبيل المثال ، يمكننا إنشاء استعلام لاسترداد المشاركات من المؤلف (المؤلفين) المحدد أو استبعاد المؤلف (المؤلفين) المحدد ، وتحديد المؤلف بواسطة المعرف أو الاسم المستعار. بنفس الطريقة ، يمكننا إنشاء استعلامات تجلب المشاركات حسب الفئة والعلامة والتصنيف والتاريخ والحقول المخصصة وأكثر من ذلك.

كيفية استخدام المعلمات لبناء استعلامات بسيطة

يمكن استخدام العديد من المعلمات بطريقة متشابهة تمامًا ، بغض النظر عن الفئة التي تنتمي إليها. على سبيل المثال ، تسمح المعلمات التالية بالاستعلام عن قاعدة البيانات بواسطة مؤلف (مؤلفي) النشر:

author( int ) – معرف المؤلف

author_name( سلسلة ) – المؤلفuser_nicename

author__in( مصفوفة ) – مصفوفة من معرفات مؤلفين متعددين

author__not_in( مصفوفة ) – مصفوفة من معرفات المؤلفين المتعددة ليتم استبعادها من مجموعة النتائج

كيف يمكننا استخدام هذه المعايير؟

في المثال التالي ، ‘author’ تحدد المعلمة أننا نريد أحدث منشورات مدونة كتبها المؤلف بالمعرف = 1:

$my_posts = get_posts( array( 'author' => 1 ) );

تسمح معلمة “المؤلف” نفسها بالاستعلام عن قاعدة البيانات بطرق مختلفة:

// return an array of posts from specific authors
$my_posts = get_posts( array( 'author' => '1,5,12' ) );
// return an array of posts excluding the specified author
$my_posts = get_posts( array( 'author' => -1 ) );

لذلك ، بناءً على قيمة المعلمة ، سيكون لديك مجموعة نتائج مع مشاركات من كاتب واحد (عدد صحيح) ، أو من مؤلفين متعددين (قائمة بالقيم المفصولة بفواصل) أو استبعاد مؤلف (قيم سلبية).

توفر المعلمات الأخرى مرونة إضافية. على سبيل المثال ، يقوم الاستدعاء التالي get_postsبإرجاع مصفوفة من أحدث منشورات المدونة من عدة مؤلفين:

// return an array of posts from multiple authors
$my_posts = get_posts( array( 'author__in' => array( 1, 5, 12 ) ) );

ويمكننا أيضًا استبعاد عدة مؤلفين:

// return an array of posts from multiple authors
$my_posts = get_posts( array( 'author__not_in' => array( 1, 5, 12 ) ) );

وبالمثل ، يمكننا استخدام معلمات الفئة ، ومعلمات العلامات ، ومعلمات نوع المشاركة ، مع بعض الاختلافات المحددة. انظر ، كمثال ، معلمات الفئة:

cat( كثافة العمليات )

category_name( سلسلة نصية )

category__and( مجموعة )

category__in( مجموعة )

category__not_in( مجموعة )

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

لذا ، دعونا نتعمق أكثر!

كيفية إنشاء استعلامات متقدمة في وورد بريس

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

الاسم : اسم

تصنيف الكتاب : book_category ،

دعم book_author لـ : العنوان ، المحرر ، الصورة المصغرة ، المقتطفات ، الحقول المخصصة

أنواع المنشورات المخصصة والتصنيفات المخصصة

لنفترض أنك تريد قائمة بأحدث الكتب في book_categoryالتصنيف المخصص المحدد . هنا مجموعة من الحجج:

$args = array(
	'post_type'		=> 'book',
	'tax_query'		=> array(
		array(
			'taxonomy'	=> 'book_category',
			'field'		=> 'slug',
			'terms'		=> 'sci-fi'
		)
	),
);

الحجج المذكورة أعلاه تخبر وورد بريس ببساطة باسترداد جميع الكتب بتنسيق ‘sci-fi’ ‘book_category’.

و ‘tax_query’تأخذ المعلمة مجموعة من المصفوفات الحجة (أي مجموعة من المصفوفات). تسمح هذه المصفوفات المتداخلة بإنشاء استعلامات معقدة للغاية بناءً على تصنيفات متعددة ، كما هو موضح في المثال أدناه:

$args = array(
	'numberposts'	=> 10,
	'post_type'		=> 'book',
	'relation'		=> 'AND',
	'tax_query'		=> array(
		array(
			'taxonomy'	=> 'book_category',
			'field'		=> 'slug',
			'terms'		=> 'sci-fi'
		),
		array(
			'taxonomy'	=> 'book_author',
			'field'		=> 'term_id',
			'terms'		=> 22
		)
	)
);

تسمح لنا هذه المعلمات باسترداد قائمة بأحدث 10 ‘book’أنواع ‘sci-fi’ ‘book_category’منشورات مكتوبة بواسطة ‘book_author’المعرف رقم 22. و ‘relation’المعلمة تحدد العلاقة المنطقية بين كل التصنيف المدرجة في ‘tax_query’. أعلاه نضع قيمته على ANDلأننا بحاجة إلى استرداد جميع الكتب التي تنتمي إلى ‘sci-fi’الفئة ANDالتي كتبها المؤلف رقم 22.

كيفية إنشاء استعلامات التعريف باستخدام معلمات الحقول المخصصة

في بعض الأحيان ، قد تحتاج إلى إنشاء قوائم بالمشاركات بناءً على مفتاح حقل مخصص و / أو قيمة معينة.

$args = array(
	'meta_key'		=> 'cover',
	'meta_value'	=> 'paperback',
	'meta_compare'	=> '='
);

تسمح لنا هذه المعلمات باسترداد جميع المنشورات عن طريق مفتاح الحقل المخصص والقيمة. ‘meta_compare’يحدد العامل المطلوب لاختبار قيمة ‘meta_value’المعلمة. هنا ‘meta_value’هو ‘=’، وهو أيضا القيمة الافتراضية.

القيم المتوفرة هي ‘=’، ‘!=’، ‘>’، ‘>=’، ‘<‘، ‘<=’، ‘LIKE’، ‘NOT LIKE’، ‘IN’، ‘NOT IN’، ‘BETWEEN’، ‘NOT BETWEEN’، ‘NOT EXISTS’، ‘REGEXP’، ‘NOT REGEXP’أو ‘RLIKE’.

هذا مثال سهل جدًا ، ولكن يمكننا إنشاء استعلامات أكثر تقدمًا. في المثال التالي ، نقوم بالاستعلام عن قاعدة البيانات الخاصة بالكتب الخيالية التي تم نشرها بعد عام 2010:

$args = array(
	'post_type'		=> 'book',
	'meta_key'		=> 'year_published',
	'meta_value_num'	=> 2010,
	'meta_compare'	=> '>',
	'tax_query'		=> array(
		array(
			'taxonomy'	=> 'book_category',
			'field'		=> 'slug'
			'terms'		=> 'fantasy'
		)
	)
);

ويمكننا أن نذهب أبعد من ذلك. في المثال التالي نقوم بخلط نوع المنشور مع تصنيف مخصص وحقلين مخصصين:

$args = array(
	'post_type'		=> 'book',
	'tax_query'		=> array(
		array(
			'taxonomy'	=> 'book_category',
			'field'		=> 'slug'
			'terms'		=> array( 'fantasy' )
		)
	),
	'meta_query'	=> array(
		'relation'		=> 'AND',
		array(
			'key'		=> 'year_published',
			'value'		=> 2010,
			'type'		=> 'numeric',
			'compare'	=> '>',
		),
		array(
			'key'		=> 'price',
			'value'		=> array( 10, 25 ),
			'type'		=> 'numeric',
			'compare'	=> 'BETWEEN',
		)
	)
);

هنا قمنا بتعيين مجموعة من المعلمات لاسترداد قائمة من كتب الخيال المنشورة بعد عام 2010 والتي تكلف BETWEEN10 دولارات و 25 دولارًا.

تريد أن تعرف كيف زدنا من حركة المرور لدينا أكثر من 1000 ٪؟

انضم إلى أكثر من 20000 آخرين ممن يتلقون رسائلنا الإخبارية الأسبوعية مع نصائح من الداخل حول وورد بريس!

إشترك الآن

يمكنك أن ترى أن ‘meta_query’المعلمة تعمل مثل ‘tax_query’المعلمة إلى حد كبير . إنه يحتفظ بمصفوفة من المصفوفات ، مما يسمح لنا بإنشاء استعلامات متقدمة بناءً على أزواج متعددة من المفاتيح / القيمة. للحصول على قائمة شاملة بمعلمات الاستعلام وعدد جيد من الأمثلة ، راجع WP_Queryالوثائق .

لماذا get_posts مقصور على 5 منشورات وورد بريس؟

و get_postsيأخذ وظيفة نفس الحجج كما WP_Query::parse_query()( انظر الدستور )، ولكن بعض المعلمات محددة تجعل من العمل بشكل مختلف قليلا من WP_Queryالكائن.

ربما لم تستخدم ‘numberposts’المعلمة في استفساراتك وتتساءل لماذا ترى 5 عناصر فقط في قائمتك.

بشكل افتراضي ، يحدد عدد المنشورات التي تحددها في الإعدادات ← قراءة صفحة المسؤول عدد المشاركات التي سيتم استردادها بواسطة استعلام وورد بريس. على أي حال، إذا لم يتم تحديد قيمة مخصص ل ‘numberposts’أو ‘posts_per_page’، get_postsبإرجاع عدد مختلف من المشاركات.

‘numberposts’هو إجمالي عدد المشاركات المطلوب استردادها. إنه اسم مستعار لـ ‘posts_per_page’in WP_Query، لكن هناك فرقًا بين الاثنين: افتراضيًا ، يكون عدد المشاركات التي يجب استردادها عند الاستخدام get_postsهو 5 ، بينما ‘posts_per_page’في الوضع WP_Queryالافتراضي هو عدد المنشورات لكل صفحة من مدونة وورد بريس الخاصة بك. يمكنك تجاوز القيمة الافتراضية عن طريق تعيين قيمة مخصصة من أجل ‘numberposts’أو ‘posts_per_page’في صفيف من الوسائط.

بالإضافة إلى ‘numberposts’المعلمات التالية خاصة بما get_postsيلي:

‘category’هي قائمة مفصولة بفواصل من معرفات الفئات. إنه اسم مستعار ‘cat’للمعامل في WP_Query.

‘include’عبارة عن قائمة بمعرفات النشر مفصولة بفواصل. هذا هو الاسم المستعار ‘post__in’للمعامل في WP_Query.

‘exclude’ عبارة عن قائمة بمعرفات النشر مفصولة بفواصل.

‘suppress_filters’يحدد ما إذا كان سيتم منع عوامل التصفية. يتم تعيين هذا المعامل افتراضيًا على truein get_posts، بينما يتم تعيينه افتراضيًا falseفي WP_Query( راجعه على المسار ).

و get_postsيعرف وظيفة في wp-includes/post.php. يمكنك التعمق في كيفية get_postsالعمل عن طريق التحقق من شفرة المصدر إما على Track (وورد بريس 5.2) أو في تثبيت وورد بريس المحلي الخاص بك.

طلب العناصر

‘orderby’و ‘order’فرز العناصر في مجموعة النتائج. أنت المشاركات التي كتبها سيارة نوع ‘ID’، ‘author’، ‘title’، ‘name’، ‘type’، ‘date’، ‘modified’، ‘parent’، ‘rand’، ‘comment_count’وبطرق أخرى كثيرة، في ترتيب تصاعدي أو تنازلي.

إذا كان لديك استعلام بسيط ، فأنت تحتاج فقط إلى تعيين قيمة لـ ‘order’و ‘orderby’. في المثال التالي ، يتم فرز المشاركات حسب اسم المنشور بترتيب تصاعدي:

$args = array(
	'author'	=> '1,5,12',
	'orderby'	=> 'name',
	'order'		=> 'ASC'
);

هذا واضح ومباشر. ولكن ماذا لو كان لديك استعلام متقدم؟ أي: هل يمكننا فرز العناصر حسب قيمة حقل مخصصة واحدة أو أكثر في استعلام تعريف متقدم؟

وورد 4.0 و جلب وورد 4.2 تحسينات هامة ل ‘orderby’و ‘meta_query’بارامس. لدينا الآن بناء جملة جديد للترتيب حسب جمل محددة لاستعلام ميتا. بفضل الصيغة الجديدة ، يمكننا استخدام الفهارس لإنشاء مراجع للبنود المحددة لاستعلام التعريف من ‘orderby’المعلمة.

بفضل هذه التحسينات ، يمكن كتابة استعلام التعريف في المثال أعلاه على النحو التالي:

$args = array(
	'meta_query'	=> array(
		'relation'		=> 'AND',
		'year_clause' => array(
			'key'		=> 'year_published',
			'value'		=> 2010,
			'type'		=> 'numeric',
			'compare'	=> '>',
		),
		'price_clause' => array(
			'key'		=> 'price',
			'value'		=> array( 10, 25 ),
			'type'		=> 'numeric',
			'compare'	=> 'BETWEEN',
		)
	),
	'orderby' => 'price_clause',
);

في المثال أعلاه قمنا بترتيب العناصر حسب ‘price_clause’.

ويمكننا فعل المزيد. اعتبارًا من الإصدار 4.0 من وورد بريس ، يمكننا المرور إلى get_postsمصفوفة من فهارس الاستعلامات الوصفية بدلاً من فهرس واحد ، كما هو موضح في المثال أدناه:

هل سئمت من مشكلات وورد بريس والمضيف البطيء؟ نحن نقدم دعمًا على مستوى عالمي من خبراء وورد بريس المتاحين على مدار الساعة طوال أيام الأسبوع وخوادم سريعة للغاية. تحقق من خططنا

$args = array(
	'meta_query'	=> array(
		'relation'		=> 'AND',
		'year_clause' => array(
			'key'		=> 'year_published',
			'value'		=> 2010,
			'type'		=> 'numeric',
			'compare'	=> '>',
		),
		'price_clause' => array(
			'key'		=> 'price',
			'value'		=> array( 10, 25 ),
			'type'		=> 'numeric',
			'compare'	=> 'BETWEEN',
		)
	),
	'orderby' => array( 'price_clause' => 'ASC', 'year_clause' => 'DESC' ),
);

تهانينا ، لقد أنشأت استعلامًا تعريفيًا متقدمًا ، وقمت بفرز النتائج أولاً ‘price_clause’بترتيب تصاعدي ، ثم ‘year_clause’بترتيب تنازلي.

انظر القائمة الكاملة لخيارات الفرز في الدستور الغذائي.

حان الوقت لعرض البيانات على الصفحة الأولى.

قراءة مقترحة: كيفية إنشاء واستخدام صفحة phpinfo بسهولة .

كيفية عرض get_posts إرجاع البيانات

يقوم وورد بريس get_postsبإرجاع مجموعة من WP_Postالكائنات مما يتيح لنا الوصول إلى عدد من المتغيرات لكل مقالة محددة مخزنة في wp_postsجدول قاعدة البيانات:

هوية شخصية

post_author

post_name

نوع آخر

post_title

تاريخ آخر

post_date_gmt

آخر المحتوى

post_excerpt

وضع آخر

تعليق_الحالة

ping_status

post_password

post_parent

post_modified

post_modified_gmt

تعليق العد

menu_order

ووردبريس get_posts: جدول wp_posts

wp_posts بنية الجدول في phpMyAdmin

يمكنك الوصول بسهولة إلى هذه البيانات foreachبدورة مثل ما يلي:

$custom_posts = get_posts( $args );

if( ! empty( $custom_posts ) ){
	$output = '<ul>';
	foreach ( $custom_posts as $p ){

		$output .= '<li><a href="' 
		. get_permalink( $p->ID ) . '">' 
		. $p->post_title . '</a></li>';
	}

	$output .= '</ul>';
}

return $output ?? '<strong>Sorry. No posts matching your criteria!</strong>';

إذا get_postsتم العثور على منشور واحد على الأقل ، فإنه يعرض مجموعة من العناصر يمكننا اجتيازها لإظهار عنوان المنشور ورابط إلى المنشور الأصلي. استخدمنا get_permalinkالوظيفة لاسترداد الرابط الثابت التالي ، حيث ليس لدينا WP_Postمتغير مقابل .

هذا سهل للغاية ، ولكن كيف يمكننا تنفيذ هذا الرمز وإنشاء قوائم مخصصة للمشاركات باستخدام وورد بريس get_posts؟

يمكنك إظهار قوائم المنشورات على صفحاتك بعدة طرق.

يمكنك تضمينها في أي مكان على الصفحة عن طريق تحرير قالب صفحة القالب الفرعي .

يمكنك تضمينها في عنصر واجهة مستخدم الشريط الجانبي .

يمكنك تضمينها في محتوى المنشور باستخدام رمز قصير مخصص

مثال من العالم الحقيقي: كيفية عرض قائمة مخصصة للعناصر برمز قصير

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

أولاً ، قم بإنشاء دليل جديد في wp-content/pluginsمجلد تثبيت وورد بريس المحلي الخاص بك أو في بيئة مرحلية . في هذا المثال ، قمت بتسمية الدليل kinsta-shortcodes .

في إنشاء ملف فب مع نفس اسم الدليل الجديد: .wp-content/plugins/kinsta-shortcodes/kinsta-shortcodes.php

افتح الملف الجديد في محرر النصوص المفضل لديك وقم بتضمين العنوان التالي:

<strong><?php</strong>
/**
 * @package Kinsta_shortcodes
 * @version 1.0
 */
/*
Plugin Name: Kinsta shortcodes
Plugin URI: http://wordpress.org/extend/plugins/#
Description: This is an example plugin 
Author: Your Name
Version: 1.0
Author URI: https://yourwebsite.com/
*/

الآن لدينا مكون إضافي جديد ، لكنه لا يزال لا يفعل شيئًا. استعرض إلى شاشة إدارة الإضافات في لوحة معلومات وورد بريس الخاصة بك وقم بتنشيط المكون الإضافي الجديد مع التأكد من WP_DEBUGتعيينهtrue في ملفك wp-config.php.

صندوق الحماية الخاص بك جاهز الآن للاختراق. الخطوة التالية هي تسجيل خطاف لرمز قصير مخصص:

/**
 * Add a hook for a shortcode tag
 */
function kinsta_shortcodes_init(){
	add_shortcode( 'kinsta_get_posts', 'kinsta_get_posts_cb' );
}
add_action('init', 'kinsta_shortcodes_init');

kinsta_get_postsهو اسم الرمز القصير kinsta_get_posts_cbوهو رد الاتصال المحدد أدناه:

/**
 * Register a shortcode
 *
 * @param array $atts Array of shortcode attributes
 */
function kinsta_get_posts_cb( $atts ){

	// safely extract custom arguments and set default values
	extract( shortcode_atts(
			array(
				'numberposts'		=> 3,
				'post_type'			=> 'post',
				'book_category'		=> 'fantasy',
				'year_published'	=> 1900,
				'price_min'			=> 0,
				'price_max'			=> 50
			),
			$atts,
			'kinsta_get_posts'
		) );

	// define the array of query arguments
	$args = array(
		'numberposts'	=> $numberposts,
		'post_type'		=> $post_type,
		'tax_query'		=> array(
			array(
				'taxonomy'	=> 'book_category',
				'field'		=> 'slug',
				'terms'		=> $book_category,
			)
		),
		'meta_query'	=> array(
			'relation'		=> 'AND',
			'year_clause'	=> array(
				'key'		=> 'year_published',
				'value'		=> $year_published,
				'type'		=> 'numeric',
				'compare'	=> '>',
			),
			'price_clause'	=> array(
				'key'		=> 'price',
				'value'		=> array( $price_min, $price_max ),
				'type'		=> 'numeric',
				'compare'	=> 'BETWEEN',
			)
		),
		'orderby' => array( 'price_clause' => 'ASC' )
	);

	$custom_posts = get_posts( $args );

	if( ! empty( $custom_posts ) ){
		$output = '<ul>';
		foreach ( $custom_posts as $p ){

			$output .= '<li><a href="' 
			. get_permalink( $p->ID ) . '">' 
			. $p->post_title . '</a> (' 
			. get_post_meta( $p->ID, 'year_published', true ) 
			. ') - Price: ' . get_post_meta( $p->ID, 'price', true ) . '</li>';
		}

		$output .= '</ul>';
	}

return $output ?? '<strong>Sorry. No posts matching your criteria!</strong>';

قمنا بتعيين ست سمات للرموز القصيرة نستخدمها لتحديد مجموعة من المعلمات ، والتي يتم تمريرها أخيرًا إلى get_postsوظيفة وورد بريس . إذا $custom_postsلم يكن فارغًا ، فإن foreachالدورة تنشئ HTML لقائمة غير مرتبة من العناصر.

الآن يمكنك أنت ومؤلفو مدونتك تضمين قوائم المنشورات باستخدام رمز قصير مثل ما يلي:

[kinsta_get_posts post_type = “book” book_category = “sci-fi” numberposts = “4” price_min = 1 price_max = 250]

بالطبع ، يمكنك تغيير مجموعة الحجج كما تريد وإجراء اختباراتك في أي منشور أو صفحة من موقع الويب الخاص بالتطوير.

مثال على ووردبريس get_posts

قائمة متقدمة بالمشاركات التي تم إنشاؤها باستخدام وظيفة get_posts

هل تحتاج إلى إنشاء قوائم منشورات أو صفحات أو أنواع منشورات مخصصة في وورد بريس؟ تعرف على كيفية القيام بذلك باستخدام وظيفة get_posts! 📌👨‍💻👩‍💻

انقر للتغريد

ملخص

وورد بريس  get_posts هي وظيفة قوية تسمح للمطورين بتضمين قوائم المنشورات في أي مكان على الواجهة الأمامية لموقع وورد بريس الخاص بك. إنه يستخدم WP_Queryولكنه أسهل في الاستخدام ويفضل WP_Queryعندما تحتاج فقط إلى قوائم المنشورات. على أي حال ، WP_Queryيوصى بإشارة مباشرة إلى عندما تحتاج إلى عرض منشورات في حلقة .

لذلك ، قم ببناء قوائمك ، واختبر الكود الخاص بك ، وعندما تكون متأكدًا من أنها تعمل بشكل جيد ، ثم (وبعد ذلك فقط) ادفعها إلى موقع الويب المباشر الخاص بك (ولكن قم بتشغيل نسخة احتياطية أولاً ).

الآن نود أن نسمع منك. ما هي تجربتك مع get_postsوظيفة وورد بريس ؟ هل لديك أي حالات استخدام لمشاركتها معنا؟ افعل ذلك في التعليقات أدناه!

وفر الوقت والتكاليف وحقق أقصى قدر من أداء الموقع من خلال:

مساعدة فورية من خبراء استضافة وورد بريس ، 24/7.

تكامل Cloudflare Enterprise.

يصل الجمهور العالمي إلى 28 مركز بيانات حول العالم.

التحسين من خلال مراقبة أداء التطبيقات المضمنة لدينا.

كل ذلك وأكثر من ذلك بكثير ، في خطة واحدة بدون عقود طويلة الأجل ، وعمليات الترحيل المدعومة ، وضمان استرداد الأموال لمدة 30 يومًا. تحقق من خططنا أو تحدث إلى قسم المبيعات للعثور على الخطة المناسبة لك.

توضيح

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

اي أخطاء تظهر في المحتوى مهما كان نوعه او تصنيفه يمكنك تحرير رسالة فورية لادارة موثوق لاجل تصحيح هذه الاخطاء، وسنكون شاكرين لك في حال قمت بالتعاون معنا لاجل اصلاح هذه الاخطاء.

شاركنا رايك وتقييمك للموضوع

{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}