يحتوي WordPRess على العديد من المكونات الإضافية لتنفيذ وظائف المقالة ذات الصلة. وتتمثل ميزة المكونات الإضافية في سهولة تكوينها، ولكن قد يكون لها تأثير بسيط على سرعة موقع الويب، لذلك لا يزال الكثير من الأشخاص يفضلون استخدام التعليمات البرمجية لتحقيق ذلك. الوظائف المطلوبة، ولكن مرة أخرى، تنفيذ التعليمات البرمجية له أيضًا عيوب، أي أن التكوين معقد، والأشخاص الذين لا يفهمون التعليمات البرمجية مرتبكون تمامًا أو يمكنهم فقط نسخ تعليمات برمجية لأشخاص آخرين، ومن الأفضل استخدام المكونات الإضافية.
لقد قمت هنا بتجميع عدة طرق لاستخدام التعليمات البرمجية لتنفيذ المقالات ذات الصلة، وسيتم تحديد وظائف كل جزء من التعليمات البرمجية بوضوح، بالإضافة إلى كيفية تخصيص الوظائف التي تريدها، وآمل أن يكون ذلك مفيدًا للجميع أي أسئلة يمكنك نشرها في هذا المقال وسوف أرد عليك فورا. قبل أن نبدأ، اسمحوا لي أن أوضح أن إخراج تنسيق كود HTML بجميع الطرق التالية يكون بالشكل التالي، ويمكنك تعديله حسب الحاجة:
<ul معرف = "xxx">
<li>* <a title="عنوان المقالة 1" rel="bookmark" href="رابط المقالة 1">عنوان المقال 1</a></li>
<li>* <a title="عنوان المقالة 2" rel="bookmark" href="رابط المقالة 2">عنوان المقال 2</a></li>
...
</ul>
الطريقة الأولى: العلامات ذات الصلة
احصل أولاً على جميع علامات المقالة، ثم احصل على n من المقالات ضمن هذه العلامات، ثم هذه المقالات n هي مقالات مرتبطة بالمقالة. جميع المكونات الإضافية للمقالات المتعلقة بـ WordPress والتي يمكن رؤيتها الآن تستخدم هذه الطريقة. هنا هو الكود المطبق:
<ul id="tags_dependent">
<?php
$post_tags = wp_get_post_tags($post->ID);
إذا ($post_tags) {
foreach ($post_tags كعلامة $)
{
// احصل على قائمة العلامات
$tag_list[] .= $tag->term_id;
}
// احصل بشكل عشوائي على علامة من قائمة العلامات
$post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];
// تستخدم هذه الطريقة وظيفة query_posts() لاستدعاء المقالات ذات الصلة، وفيما يلي قائمة المعلمات
$الوسائط = صفيف(
'tag__in' => مصفوفة($post_tag)،
'category__not_in' => array(NULL), // معرف الفئة غير متضمن
'post__not_in' => مصفوفة($post->ID)،
'showposts' => 6, // عرض عدد المقالات ذات الصلة
'caller_get_posts' => 1
);
query_posts($args);
إذا (have_posts ()):
while (have_posts()): the_post(); update_post_caches($posts ?>
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); >></لي>
<?php endwhile; آخر : ?>
<li>* لا توجد مقالات ذات صلة بعد</li>
<?php endif;
</ul>
تعليمات الاستخدام: "معرف الفئة المستبعد" يعني أن المقالات ذات الصلة لا تعرض المقالات ضمن هذه الفئة، فقط قم بتغيير NULL في نفس الصف إلى معرف فئة المقالة، استخدم فواصل نصف العرض لفصل المعرفات المتعددة. لأنه يتم عرض 6 مقالات ذات صلة فقط هنا، بغض النظر عن عدد القيم المخصصة للمعلمة tag__in لـ query_posts()، سيتم عرض 6 مقالات فقط تحت علامة واحدة، ما لم تحتوي العلامة الأولى على مقال واحد والعلامة الثانية يحتوي على مقالتين، والثالث يحتوي على 3 مقالات. . . . . . لذا، إذا كانت هذه المقالة تحتوي على علامات متعددة، فإن ما نفعله هو الحصول على معرف العلامة بشكل عشوائي، وتعيينه للمعلمة tag__in، والحصول على المقالات الستة الموجودة أسفل العلامة.
الطريقة الثانية: التصنيف المتعلق
تحقق هذه الطريقة الغرض من الحصول على المقالات ذات الصلة عن طريق الحصول على معرف فئة المقالة، ثم الحصول على المقالات ضمن هذه الفئة.
<ul id="cat_dependent">
<?php
$cats = wp_get_post_categories($post->ID);
إذا ($القطط) {
$cat = get_category( $cats[0] );
$first_cat = $cat->cat_ID;
$الوسائط = صفيف(
'category__in' => المصفوفة($first_cat)،
'post__not_in' => مصفوفة($post->ID)،
'المشاركات' => 6،
'caller_get_posts' => 1);
query_posts($args);
إذا (have_posts ()):
while (have_posts()): the_post(); update_post_caches($posts ?>
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute();
?>"><?php the_title(); ?></a></li>
<?php endwhile; آخر : ?>
<li>* لا توجد مقالات ذات صلة بعد</li>
<?php endif;
</ul>
الطريقة الثالثة: الحصول على SQL ذات الصلة بالعلامة
يشبه مبدأ الحصول على المقالات ذات الصلة الطريقة الأولى، ولكن عند الحصول على المقالات، يتم استخدام عبارات SQL لقراءة قاعدة البيانات مباشرة، وبالتالي الحصول بشكل عشوائي على 6 سجلات مقالات ذات صلة، بدلاً من وظيفة WordPress query_posts().
<ul id="tags_dependent">
<?php
$post_tags = wp_get_post_tags($post->ID);
إذا ($post_tags) {
foreach ($post_tags كعلامة $)
{
// احصل على قائمة العلامات
$tag_list[] .= $tag->term_id;
}
// احصل بشكل عشوائي على علامة من قائمة العلامات
$post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];
$ ذات الصلة = $wpdb->get_results("
حدد {$wpdb->prefix}posts.post_title، {$wpdb->prefix}posts.guid
من {$wpdb->prefix}المشاركات، {$wpdb->prefix}term_relationships، {$wpdb->prefix}term_taxonomy
حيث {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id
AND {$wpdb->prefix}term_taxonomy.taxonomy = 'post_tag'
AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}
term_relationships.term_taxonomy_id
و {$wpdb->prefix}posts.post_status = 'publish'
و {$wpdb->prefix}posts.post_type = 'post'
AND {$wpdb->prefix}term_taxonomy.term_id = '" . $post_tag . "'
AND {$wpdb->prefix}posts.ID != '" . $post->ID . "'
الطلب حسب الراند()
الحد 6 بوصات)؛
// الرقم 6 في الكود أعلاه هو الحد من الحصول على 6 مقالات ذات صلة فقط.
// من خلال تعديل الرقم 6، يمكنك تعديل عدد المقالات التي تريدها
إذا ($ ذات الصلة) {
foreach ($ ذات صلة بـ $dependent_post) {
?>
<li>* <a href="<?php echo $dependent_post->guid; ?>" rel="bookmark"
title="<?php echo $dependent_post->post_title; ?>"><?php echo $dependent_post->post_title ?></a></li>
<?php } } آخر { ?>
<li>* لا توجد مقالات ذات صلة بعد</li>
<?php } }?>
</ul>
الطريقة الرابعة: التصنيف المتعلق باكتساب SQL
مبدأ الحصول على المقالات ذات الصلة مشابه للطريقة الثانية، ولكن عند الحصول على المقالات، يتم استخدام عبارات SQL لقراءة قاعدة البيانات مباشرة، وبالتالي الحصول بشكل عشوائي على 6 سجلات مقالات ذات صلة، بدلاً من وظيفة WordPress query_posts().
<ul id="cat_dependent">
<?php
$cats = wp_get_post_categories($post->ID);
إذا ($القطط) {
$cat = get_category( $cats[0] );
$first_cat = $cat->cat_ID;
$ ذات الصلة = $wpdb->get_results("
حدد wp_posts.post_title، wp_posts.guid
من wp_posts، wp_term_relationships، wp_term_taxonomy
حيث wp_posts.ID = wp_term_relationships.object_id
AND {$wpdb->prefix}term_taxonomy.taxonomy = 'category'
AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
و {$wpdb->prefix}posts.post_status = 'publish'
و {$wpdb->prefix}posts.post_type = 'post'
AND {$wpdb->prefix}term_taxonomy.term_id = '" . $first_cat . "'
AND {$wpdb->prefix}posts.ID != '" . $post->ID . "'
الطلب حسب الراند()
الحد 6 بوصات)؛
إذا ($ ذات الصلة) {
foreach ($ ذات صلة بـ $dependent_post) {
?>
<li>* <a href="<?php echo $dependent_post->guid; ?>" rel="bookmark"
title="<?php echo $dependent_post->post_title; ?>"><?php echo $dependent_post->post_title ?></a></li>
<?php } } آخر { ?>
<li>* لا توجد مقالات ذات صلة بعد</li>
<?php } }?>
</ul>
الطريقة الخامسة: ذات الصلة بالمؤلف
تهدف هذه الطريقة إلى الحصول على مقالات أخرى لمؤلف هذه المقالة لتكون بمثابة مقالات ذات صلة، ويكون الكود كما يلي:
<ul id="author_dependent">
<?php
$post_author = get_the_author_meta( 'user_login' );
$الوسائط = صفيف(
'author_name' => $post_author،
'post__not_in' => مصفوفة($post->ID)،
'showposts' => 6, // عرض عدد المقالات ذات الصلة
'orderby' => التاريخ، // الترتيب حسب الوقت
'caller_get_posts' => 1
);
query_posts($args);
إذا (have_posts ()):
while (have_posts()): the_post(); update_post_caches($posts ?>
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark"
title="<?php the_title_attribute(); ?>"><?php the_title() ?></a></li>
<?php endwhile; آخر : ?>
<li>* لا توجد مقالات ذات صلة بعد</li>
<?php endif;
</ul>
مقارنة كفاءة الوقت
سوف نستخدم كود PHP سابق لقياس وقت تنفيذ الكود لكل من المقالات ذات الصلة أعلاه من أجل تقييم كفاءة كل من الطرق المذكورة أعلاه وتوفير مرجع لاختيارك. ما يلي هو الحصول على 6 مقالات ذات صلة في نفس المقالة، ووقت الحساب النهائي لكل طريقة أعلاه هو كما يلي:
الطريقة الأولى: 0.18067908287048 ثانية
الطريقة الثانية: 0.057158946990967 ثانية
الطريقة الثالثة: 0.037126064300537 ثانية
الطريقة الرابعة: 0.045628070831299 ثانية
الطريقة الخامسة: 0.023991823196411 ثانية
النص الأصلي: http://www.ludou.org/how-to-generate-dependent-posts-in-wordpress.html