워드프레스에서는 관련 기사 기능을 어떻게 구현하나요? 다음 글에서는 WordPress 코드로 관련 글을 구현하는 여러 가지 방법을 소개하겠습니다. 도움이 되길 바랍니다.
많은 WordPress 플러그인은 관련 기사의 기능을 구현할 수 있습니다. 플러그인의 장점은 구성이 간단하지만 웹 사이트 속도에 약간의 영향을 미칠 수 있으므로 여전히 많은 사람들이 있습니다. 필요한 기능을 달성하기 위해 코드를 사용하는 것을 선호하지만, 그렇다면 코드 구현에도 단점이 있습니다. 즉, 구성이 복잡하고, 코드를 이해하지 못하는 사람들은 완전히 혼란스럽거나 다른 사람의 코드만 복사할 수 있다는 것입니다. 플러그인을 사용하는 것이 더 좋습니다.
여기서 코드를 사용하여 구현하는 여러 가지 방법을 정리했습니다. 코드의 각 부분의 기능과 원하는 기능을 사용자 정의하는 방법이 모두에게 도움이 되기를 바랍니다. 시작하기 전에 다음 모든 방법으로 출력되는 HTML 코드 형식은 다음과 같은 형식이라는 점을 설명하겠습니다. 필요에 따라 수정할 수 있습니다.
<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>
먼저 모든 태그를 가져옵니다. 기사의 태그 아래에 이 n개의 기사를 가져오면 이 n개의 기사는 이 기사와 관련된 기사입니다. 현재 볼 수 있는 모든 WordPress 관련 기사 플러그인은 이 방법을 사용합니다. 구현된 코드는 다음과 같습니다.
<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>
사용 지침: "카테고리 ID가 포함되지 않음"은 이 카테고리에 기사를 표시하지 않는 관련 기사를 의미합니다. 피어의 NULL을 기사 카테고리의 ID로 변경하면 됩니다. ID는 쉼표로 구분하세요. 여기에는 관련 기사 6개만 표시되기 때문에 query_posts()의 tag__in 매개변수에 몇 개의 값을 할당하더라도 첫 번째 태그에 기사가 1개, 두 번째 태그가 없는 한 하나의 태그 아래에 6개의 기사만 표시됩니다. 2개의 기사가 있고, 세 번째에는 3개의 기사가 있습니다. . . . . . 따라서 이 기사에 여러 태그가 있는 경우 태그의 ID를 무작위로 가져와서 tag__in 매개변수에 할당하고 해당 태그 아래에 있는 6개의 기사를 가져옵니다.
이 방법은 기사의 카테고리 ID를 얻은 다음 이 카테고리에 속한 기사를 얻음으로써 관련 기사를 얻는 목적을 달성합니다.
<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>
관련 기사를 얻는 원리는 방법 1과 유사하지만 기사를 얻을 때 SQL 문을 사용하여 데이터베이스를 직접 읽어서 무작위로 6개의 관련 기사를 얻습니다. WordPress 함수 대신 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>
관련 기사를 얻는 원리는 방법 2와 비슷하지만 기사를 얻을 때 SQL 문을 직접 사용합니다. WordPress 함수 query_posts() 대신 데이터베이스를 읽어 관련 기사 레코드 6개를 무작위로 얻습니다.
<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>
이 방법은 관련 기사로 사용할 기사 작성자의 다른 기사를 얻는 것입니다. 기사의 코드는 다음과 같습니다.
<ul id="author_related"><?php global $post; $post_author = get_the_author_meta( 'user_login' ); $args = array( 'author_name' => $post_author, 'post__not_in' => array($post->ID), 'showposts' => 6, // 显示相关文章数量 'orderby' => date, // 按时间排序 '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();?></ul>
위의 각 방법의 효율성을 평가하고 이에 대한 참조를 제공하기 위해 위의 관련 기사 각각의 코드 실행 시간을 측정합니다. 당신의 선택. 위의 각 방법의 최종 계산 시간은 다음과 같습니다.
방법 1: 0.18067908287048초
방법 2: 0.057158946990967초
방법 3: 0.037126064300537초
방법 4: 0.045628070831299초
방법 5 : 0.023991823196411초
추천 학습: "WordPress Tutorial"
위 내용은 WordPress에서는 관련 기사 기능을 어떻게 구현하나요? 다양한 공유 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!