ホームページ > 記事 > CMS チュートリアル > WordPress は関連記事機能をどのように実装していますか?いくつかの共有方法
WordPress は関連記事機能をどのように実装していますか?次の記事では、WordPress コードで関連記事を実装するいくつかの方法を紹介します。
WordPress プラグインの多くは、関連記事の機能を実現できます。プラグインの利点は設定が簡単なことですが、影響が小さい場合があります。ウェブサイトの速度が速いので、依然として多くの人が好む 私はコードを使用して必要な機能を実装するのが好きですが、繰り返しになりますが、コードの実装には欠点もあります。つまり、構成が複雑で、コードを理解していない人は完全に理解できません。混乱したり、他の人のコードをコピーすることしかできないため、プラグインを使用することをお勧めします。
ここでは、コードを使用して関連記事を実装するいくつかの方法をまとめました。コードの各部分の機能の詳細と、必要な機能をカスタマイズする方法について説明します。みんな、助けて。始める前に、以下のすべてのメソッドによって出力される HTML コード形式は次の形式であることを説明します。必要に応じて変更できます。 1: タグ関連
まず、記事のすべてのタグを取得し、次にそのタグの下にある n 個の記事を取得すると、これらの n 個の記事がその記事に関連する記事になります。現在確認できるすべての WordPress 関連記事プラグインはこの方法を使用しています。実装されたコードは次のとおりです:<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>使用方法: 「カテゴリ ID が含まれていません」は、このカテゴリの記事が表示されない関連記事を指します。ピアの NULL を記事の ID に変更するだけです。カテゴリ 詳細 IDは半角カンマで区切られます。ここでは関連記事が6件しか表示されないため、query_posts()のパラメータtag__inにいくつの値を代入しても、最初のタグに1記事、2番目のタグがない限り、1つのタグの下に6件の記事しか表示されません。には 2 つの記事があり、3 番目には 3 つの記事があります。 。 。 。 。 。したがって、この記事に複数のタグがある場合、タグの ID をランダムに取得し、それを tag__in パラメーターに割り当て、そのタグの下にある 6 つの記事を取得します。
方法 2: 分類関連
この方法では、記事の分類 ID を取得し、このカテゴリの下にある記事を取得することで、関連記事を取得するという目的を達成します。<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( 'tag__in' => array($post_tag), 'category__not_in' => array(NULL), // 不包括的分类ID 'post__not_in' => array($post->ID), 'showposts' => 6, // 显示相关文章数量 'caller_get_posts' => 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 '<li>* 暂无相关文章</li>'; } wp_reset_query(); } else { echo '<li>* 暂无相关文章</li>'; } ?> </ul>
方法 3: タグ関連、SQL 取得
関連記事を取得する原理は方法 1 と似ていますが、記事を取得する際には、 SQL ステートメントを使用してデータベースを直接読み取り、WordPress 関数 query_posts() の代わりに 6 つの関連記事レコードをランダムに取得します。<ul id="cat_related"><?phpglobal $post;$cats = wp_get_post_categories($post->ID);if ($cats) { $args = array( 'category__in' => array( $cats[0] ), 'post__not_in' => array( $post->ID ), 'showposts' => 6, 'caller_get_posts' => 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 '<li>* 暂无相关文章</li>'; } wp_reset_query(); }else { echo '<li>* 暂无相关文章</li>';}?></ul>
方法 4: 分類関連、SQL Get
関連記事を取得する原理は方法 2 と似ていますが、記事を取得する際には、WordPress 関数を使用するのではなく、SQL ステートメントを使用してデータベースを直接読み取り、6 つの関連記事レコードをランダムに取得します。 query_posts().<ul id="tags_related"><?phpglobal $post, $wpdb;$post_tags = wp_get_post_tags($post->ID);if ($post_tags) { $tag_list = ''; foreach ($post_tags as $tag) { // 获取标签列表 $tag_list .= $tag->term_id.','; } $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 = 'post_tag' AND post_status = 'publish' AND post_type = 'post' AND term_id IN (" . $tag_list . ") AND ID != '" . $post->ID . "' 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 '<li>暂无相关文章</li>'; } }else { echo '<li>暂无相关文章</li>';}?></ul>
メソッド 5: 著者関連
このメソッドは、記事の著者の他の記事を取得して、記事として使用します。関連記事、コード 以下のとおりです。<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 = 'category' AND {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id AND {$wpdb->prefix}posts.post_status = 'publish' AND {$wpdb->prefix}posts.post_type = 'post' AND {$wpdb->prefix}term_taxonomy.term_id = '" . $cats[0] . "' AND {$wpdb->prefix}posts.ID != '" . $post->ID . "' 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 '<li>* 暂无相关文章</li>'; } }else { echo '<li>* 暂无相关文章</li>';}?></ul>
時間効率の比較
上記の各関連記事のコード実行時間を順番に測定します。上記の各方法の効率を評価するには、選択の参考にしてください。以下は、同じ記事内の関連記事を 6 件取得する場合で、上記の各方法の最終的な計算時間は次のとおりです:方法 4: 0.045628070831299 秒
方法 5: 0.023991823196411 秒
推奨学習: 「
WordPress チュートリアル
」
以上がWordPress は関連記事機能をどのように実装していますか?いくつかの共有方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。