Rumah > Tutorial CMS > WordTekan > Bagaimanakah WordPress melaksanakan fungsi artikel berkaitan? Beberapa cara untuk dikongsi

Bagaimanakah WordPress melaksanakan fungsi artikel berkaitan? Beberapa cara untuk dikongsi

青灯夜游
Lepaskan: 2023-03-01 20:17:34
ke hadapan
1354 orang telah melayarinya

Bagaimanakah WordPress melaksanakan fungsi artikel berkaitan? Artikel berikut akan memperkenalkan kepada anda beberapa cara untuk melaksanakan artikel berkaitan dalam kod WordPress saya harap ia akan membantu anda!

Bagaimanakah WordPress melaksanakan fungsi artikel berkaitan? Beberapa cara untuk dikongsi

Banyak pemalam WordPress boleh merealisasikan fungsi artikel berkaitan Kelebihan pemalam ialah ia mudah untuk dikonfigurasi, tetapi ia mungkin mempunyai kesan yang kecil kelajuan laman web, begitu ramai orang masih lebih suka saya suka menggunakan kod untuk melaksanakan fungsi yang diperlukan, tetapi sekali lagi, pelaksanaan kod juga mempunyai kekurangan, iaitu konfigurasinya rumit, dan orang yang tidak memahami kod sepenuhnya. keliru atau hanya boleh menyalin kod orang lain, jadi lebih baik menggunakan plug-in.

Di sini saya telah menyusun beberapa cara untuk menggunakan kod untuk melaksanakan artikel berkaitan Fungsi setiap bahagian kod akan diperincikan dan cara untuk menyesuaikan fungsi yang anda mahukan semua orang. Sebelum kita mula, izinkan saya menerangkan bahawa output format kod HTML oleh semua kaedah berikut adalah dalam bentuk berikut Anda boleh mengubah suai mengikut keperluan anda:

<ul id="xxx">
    <li>* <a title="文章标题1" rel="bookmark" href="文章链接1">文章标题1</a></li>
    <li>* <a title="文章标题2" rel="bookmark" href="文章链接2">文章标题2</a></li>
    ......
</ul>
Salin selepas log masuk

<🎜. >Kaedah 1: Tag berkaitan

Mula-mula dapatkan semua tag artikel, dan kemudian dapatkan n artikel di bawah tag ini, kemudian n artikel ini adalah artikel yang berkaitan dengan artikel. Semua pemalam artikel berkaitan WordPress yang boleh dilihat kini menggunakan kaedah ini. Berikut ialah kod yang dilaksanakan:

<ul id="tags_related">
<?php
global $post;
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags) {
  foreach ($post_tags as $tag) {
    // 获取标签列表
    $tag_list[] .= $tag->term_id;
  }
  // 随机获取标签列表中的一个标签
  $post_tag = $tag_list[ mt_rand(0, count($tag_list) - 1) ];
  // 该方法使用 query_posts() 函数来调用相关文章,以下是参数列表
  $args = array(
        &#39;tag__in&#39; => array($post_tag),
        &#39;category__not_in&#39; => array(NULL),  // 不包括的分类ID
        &#39;post__not_in&#39; => array($post->ID),
        &#39;showposts&#39; => 6,            // 显示相关文章数量
        &#39;caller_get_posts&#39; => 1
    );
  query_posts($args);
  if (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
    }
  }
  else {
    echo &#39;<li>* 暂无相关文章</li>&#39;;
  }
  wp_reset_query(); 
}
else {
  echo &#39;<li>* 暂无相关文章</li>&#39;;
}
?>
</ul>
Salin selepas log masuk
Arahan penggunaan: "ID Kategori tidak disertakan" merujuk kepada artikel berkaitan yang tidak memaparkan artikel di bawah kategori ini Hanya tukar NULL dalam peer kepada ID kategori artikel , berbilang ID dipisahkan dengan koma separuh lebar. Kerana hanya 6 artikel berkaitan dipaparkan di sini, tidak kira berapa banyak nilai yang diberikan kepada parameter tag__in query_posts(), hanya 6 artikel di bawah satu teg akan dipaparkan, melainkan teg pertama mempunyai 1 artikel dan teg kedua mempunyai 2 artikel, dan yang ketiga mempunyai 3 artikel. . . . . . Jadi jika artikel ini mempunyai berbilang teg, maka apa yang kita lakukan ialah mendapatkan id teg secara rawak, menetapkannya pada parameter tag__in dan mendapatkan 6 artikel di bawah teg tersebut.

Kaedah 2: Kategori berkaitan

Kaedah ini mencapai tujuan mendapatkan artikel berkaitan dengan mendapatkan id kategori artikel dan kemudian mendapatkan artikel di bawah kategori ini.

<ul id="cat_related"><?phpglobal $post;$cats = wp_get_post_categories($post->ID);if ($cats) {
    $args = array(
		  &#39;category__in&#39; => array( $cats[0] ),
		  &#39;post__not_in&#39; => array( $post->ID ),
		  &#39;showposts&#39; => 6,
		  &#39;caller_get_posts&#39; => 1
	  );
  query_posts($args);

  if (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
    }
  } 
  else {
    echo &#39;<li>* 暂无相关文章</li>&#39;;
  }
  wp_reset_query(); }else {
  echo &#39;<li>* 暂无相关文章</li>&#39;;}?></ul>
Salin selepas log masuk

Kaedah tiga: berkaitan tag, pemerolehan SQL

Prinsip mendapatkan artikel berkaitan adalah serupa dengan kaedah pertama, tetapi dalam mendapatkan artikel Pada masa ini, pernyataan SQL digunakan untuk terus membaca pangkalan data, dengan itu secara rawak mendapatkan 6 rekod artikel berkaitan, bukannya fungsi WordPress query_posts().

<ul id="tags_related"><?phpglobal $post, $wpdb;$post_tags = wp_get_post_tags($post->ID);if ($post_tags) {
    $tag_list = &#39;&#39;;
    foreach ($post_tags as $tag) {
        // 获取标签列表
        $tag_list .= $tag->term_id.&#39;,&#39;;
    }
    $tag_list = substr($tag_list, 0, strlen($tag_list)-1);

    $related_posts = $wpdb->get_results("
        SELECT DISTINCT ID, post_title
        FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy
        WHERE {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
        AND ID = object_id
        AND taxonomy = &#39;post_tag&#39;
        AND post_status = &#39;publish&#39;
        AND post_type = &#39;post&#39;
        AND term_id IN (" . $tag_list . ")
        AND ID != &#39;" . $post->ID . "&#39;
        ORDER BY RAND()
        LIMIT 6");
        // 以上代码中的 6 为限制只获取6篇相关文章
        // 通过修改数字 6,可修改你想要的文章数量

    if ( $related_posts ) {
        foreach ($related_posts as $related_post) {?>
    <li><a href="<?php echo get_permalink($related_post->ID); ?>" rel="bookmark" title="<?php echo $related_post->post_title; ?>"><?php echo $related_post->post_title; ?></a></li><?php   } 
    }
    else {
      echo &#39;<li>暂无相关文章</li>&#39;;
    } }else {
  echo &#39;<li>暂无相关文章</li>&#39;;}?></ul>
Salin selepas log masuk

Kaedah 4: Klasifikasi berkaitan, pemerolehan SQL

Prinsip mendapatkan artikel berkaitan adalah serupa dengan kaedah dua, tetapi apabila mendapatkan artikel, pernyataan SQL digunakan untuk membaca terus pangkalan data, dengan itu secara rawak mendapatkan 6 artikel berkaitan rekod, dan Ia bukan fungsi WordPress query_posts().

<ul id="cat_related"><?phpglobal $post, $wpdb;$cats = wp_get_post_categories($post->ID);if ($cats) {
  $related = $wpdb->get_results("
  SELECT post_title, ID
  FROM {$wpdb->prefix}posts, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy
  WHERE {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id
  AND {$wpdb->prefix}term_taxonomy.taxonomy = &#39;category&#39;
  AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
  AND {$wpdb->prefix}posts.post_status = &#39;publish&#39;
  AND {$wpdb->prefix}posts.post_type = &#39;post&#39;
  AND {$wpdb->prefix}term_taxonomy.term_id = &#39;" . $cats[0] . "&#39;
  AND {$wpdb->prefix}posts.ID != &#39;" . $post->ID . "&#39;
  ORDER BY RAND( )
  LIMIT 6");

  if ( $related ) {
	  foreach ($related as $related_post) {?>
	<li>* <a href="<?php echo get_permalink($related_post->ID); ?>" rel="bookmark" title="<?php echo $related_post->post_title; ?>"><?php echo $related_post->post_title; ?></a></li><?php
    } 
  }
  else {
    echo &#39;<li>* 暂无相关文章</li>&#39;;
  } }else {
  echo &#39;<li>* 暂无相关文章</li>&#39;;}?></ul>
Salin selepas log masuk

Kaedah 5: Pengarang berkaitan

Kaedah ini adalah untuk mendapatkan artikel lain pengarang artikel ini Untuk berfungsi sebagai artikel berkaitan, kodnya adalah seperti berikut:

<ul id="author_related"><?php
  global $post;
  $post_author = get_the_author_meta( &#39;user_login&#39; );
  $args = array(
        &#39;author_name&#39; => $post_author,
        &#39;post__not_in&#39; => array($post->ID),
        &#39;showposts&#39; => 6,				// 显示相关文章数量
        &#39;orderby&#39; => date,			// 按时间排序
        &#39;caller_get_posts&#39; => 1
    );
  query_posts($args);

  if (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
    }
  }
  else { 
    echo &#39;<li>* 暂无相关文章</li>&#39;;
  }
  wp_reset_query();?></ul>
Salin selepas log masuk

Perbandingan kecekapan masa

Kami mengukur masa pelaksanaan kod setiap artikel berkaitan di atas, Untuk menilai kecekapan setiap kaedah di atas dan menyediakan rujukan untuk pilihan anda. Berikut adalah untuk mendapatkan 6 artikel berkaitan dalam artikel yang sama Masa pengiraan akhir setiap kaedah di atas adalah seperti berikut:

Kaedah satu: 0.18067908287048 saat

Kaedah dua: 0.057158946990967 saat
Kaedah tiga: 0.0371260643005 37 saat
Kaedah 4: 0.045628070831299 saat
Kaedah 5: 0.023991823196411 saat

W

Pembelajaran yang disyorkan 🎜>

Atas ialah kandungan terperinci Bagaimanakah WordPress melaksanakan fungsi artikel berkaitan? Beberapa cara untuk dikongsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:ludou.org
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan