検索
ホームページCMS チュートリアル&#&プレスWordPress は関連記事機能をどのように実装していますか?いくつかの共有方法

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(
        &#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>

方法 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(
		  &#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>

方法 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 = &#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>

メソッド 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 = &#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>

時間効率の比較

上記の各関連記事のコード実行時間を順番に測定します。上記の各方法の効率を評価するには、選択の参考にしてください。以下は、同じ記事内の関連記事を 6 件取得する場合で、上記の各方法の最終的な計算時間は次のとおりです:

方法 1: 0.18067908287048 秒 方法 2: 0.057158946990967 秒

方法 3: 0.037126064300537 秒

方法 4: 0.045628070831299 秒

方法 5: 0.023991823196411 秒


推奨学習: 「
WordPress チュートリアル

以上がWordPress は関連記事機能をどのように実装していますか?いくつかの共有方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は露兜即刻で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
WordPressは、他の人気のあるCMSプラットフォームと比較してどうですか?WordPressは、他の人気のあるCMSプラットフォームと比較してどうですか?May 02, 2025 am 12:18 AM

wordpressexcelsineaseofuseandaptaptability、makeitideal forbeginnersandsmalltomedium-sizedinesses.1)Easeofuse:wordpressisuser-frendly.2)セキュリティ:DrupalleadSwithSecurityFeatures.3)パフォーマンス:GhostoffersexcellencedueTonode.4)scal

WordPressを使用してメンバーシップサイトを構築できますか?WordPressを使用してメンバーシップサイトを構築できますか?May 01, 2025 am 12:08 AM

はい、YouCanuseWordPressTobuildAmberShiTeThite.Hore'show:1)usepluginslikememberpress、paidmembersubscriptions、orwooocommerceforusermanagement、contentaccesscontrol.2)ensurecontententrectectionwithdatedditedditionalsurationuresures

WordPressは、CMSとして使用するためにコーディングの知識が必要ですか?WordPressは、CMSとして使用するためにコーディングの知識が必要ですか?Apr 30, 2025 am 12:03 AM

WordPressを使用するためにプログラミングの知識は必要ありませんが、プログラミングをマスターするとエクスペリエンスが向上する可能性があります。 1)CSSとHTMLを使用して、テーマスタイルを調整します。 2)PHPの知識は、トピックファイルを編集して機能を追加できます。 3)カスタムプラグインとメタタグはSEOを最適化できます。 4)更新の問題を防ぐために、サブトピックのバックアップと使用に注意してください。

WordPressを使用する際のセキュリティ上の考慮事項は何ですか?WordPressを使用する際のセキュリティ上の考慮事項は何ですか?Apr 29, 2025 am 12:01 AM

tosecureawwordpresssite、soflowthesesteps:1)定期的にwordpresscore、themes、およびpluginstopatchvulnerabilities.2)usestrong、usestrong、usestrong、sonsandenabletototothentication.3)optformanagedagedwordpresshosting arehoredhoredhoredhored hosting withebapplicationfirewaal

WordPressは他のWebサイトビルダーとどのように比較されますか?WordPressは他のWebサイトビルダーとどのように比較されますか?Apr 28, 2025 am 12:04 AM

wordpressexexexexexcelsoverwebsitebuildersduetoits ffficability、scalability、andopen-sourcenature.1)それは、aversatilecmswitextensive sustomizationoptionsviathemesandplugins.2)その学習中心部のスチッピアベッタービューターフルフルフルフルフルフルフルカンセーズ。3)

2025年に開発者が使用できる5つのWordPressプラグイン2025年に開発者が使用できる5つのWordPressプラグインApr 27, 2025 am 08:25 AM

2025年のウェブサイト開発のための7つの必須ワードプレスプラグイン 2025年に一流のWordPress Webサイトを構築するには、速度、応答性、およびスケーラビリティが必要です。 これを効率的に達成することは、しばしば戦略的なプラグインの選択にかかっています。 この記事Highlig

WordPressは何のために使用しますか?WordPressは何のために使用しますか?Apr 27, 2025 am 12:14 AM

wordpresscanbeusedpurposesbeyondblogging.1)e-ocommerce:withwoocommerce、itcanbecomeafulloninestore.2)メンバーシップサイト:Pluginslikememberpressenable clusivecontentareas.3)ポートフォリオソイト:ThemeslikeasieasiestraololowStunnningStunnningStunnningStunnningStuntunnneDayOutssuntunnneaTuntunnnedrayOutuntuntuntunnnedraySuts

WordPressはポートフォリオWebサイトを作成するのに適していますか?WordPressはポートフォリオWebサイトを作成するのに適していますか?Apr 26, 2025 am 12:05 AM

はい、wordpressisexcellentforcreatingportfoliowebsite.1)itoffers numersportfolio cilems like'astra'astra'foreasycustomization.2)プラグインエレメントレメントレディングの装飾、思想的な態度環境を

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール