首页 > WordPress学习 > WordPress相关文章tag标签获取 数量不足用分类文章补足 chatgpt答案参考

WordPress相关文章tag标签获取 数量不足用分类文章补足 chatgpt答案参考

时间:2023年4月6日 分类:WordPress学习 浏览量:339

今天用chatgpt来帮忙设计一份相关文章的代码,需求是:

1、优先用tag标签获取相关文章;2、数量不足时,用本分类文章随机补足;3、还不够数量时,全局随机补足;

以下是chatgpt给出的相关文章tag标签及分类写法:

<?php
// 获取当前文章的标签
$tags = wp_get_post_tags(get_the_ID());

// 定义相关文章数组
$related_posts = array();

// 获取与当前文章有相同标签的文章
if ($tags) {
    $tag_ids = array();
    foreach ($tags as $tag) {
        $tag_ids[] = $tag->term_id;
    }
    $args = array(
        'tag__in' => $tag_ids,
        'post__not_in' => array(get_the_ID()),
        'posts_per_page' => 8
    );
    $related_posts_query = new WP_Query($args);
    while ($related_posts_query->have_posts()) {
        $related_posts_query->the_post();
        $related_posts[] = get_the_ID();
    }
    wp_reset_postdata();
}

// 如果相关文章数量不足8篇,则从当前文章所在分类中获取文章
if (count($related_posts) < 8) {
    $cat_ids = array();
    foreach (get_the_category() as $cat) {
        $cat_ids[] = $cat->term_id;
    }
    $args = array(
        'category__in' => $cat_ids,
        'post__not_in' => array(get_the_ID()),
        'posts_per_page' => 8 - count($related_posts),
        'orderby' => 'rand'
    );
    $related_posts_query = new WP_Query($args);
    while ($related_posts_query->have_posts()) {
        $related_posts_query->the_post();
        $related_posts[] = get_the_ID();
    }
    wp_reset_postdata();
}

// 如果相关文章数量还是不足8篇,则从全站中随机获取文章
if (count($related_posts) < 8) {
    $args = array(
        'post__not_in' => array_merge(array(get_the_ID()), $related_posts),
        'posts_per_page' => 8 - count($related_posts),
        'orderby' => 'rand'
    );
    $related_posts_query = new WP_Query($args);
    while ($related_posts_query->have_posts()) {
        $related_posts_query->the_post();
        $related_posts[] = get_the_ID();
    }
    wp_reset_postdata();
}

// 输出相关文章
if ($related_posts) {
    echo '<h3>相关推荐</h3>';
    echo '<ul>';
    foreach ($related_posts as $post_id) {
        echo '<li><a href="' . get_permalink($post_id) . '">' . get_the_title($post_id) . '</a></li>';
    }
    echo '</ul>';
}
?>

代码解释:

  • 首先使用 wp_get_post_tags() 函数获取当前文章的标签,如果没有标签,则不获取相关文章。
  • 根据标签使用 WP_Query() 查询相关文章,将其 ID 存储在 $related_posts 数组中,最多存储 8 篇文章。
  • 如果相关文章数量不足 8 篇,则从当前文章所在分类中随机获取文章,将其 ID 存储在 $related_posts 数组中,最多存储 8 篇文章。
  • 如果相关文章数量还是不足 8 篇,则从全站中随机获取文章,将其 ID 存储在$related_posts 数组中,最多存储 8 篇文章。最后,使用 foreach 循环输出相关文章的标题和链接。

注意事项:

  • 请将以上代码放置在 single.php 文件中的文章内容输出部分之后,例如在 the_content() 函数之后。
  • 请注意使用正确的 HTML 标记来包裹输出的相关文章列表,例如使用 <ul> 和 <li> 标记来显示列表。
  • 请确保您的主题支持标签和分类功能,并且每篇文章至少有一个标签或分类。
  • 在获取相关文章的过程中,使用 wp_reset_postdata() 函数重置文章查询,以确保不会影响到后续的文章查询。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权

文章名称:WordPress相关文章tag标签获取 数量不足用分类文章补足 chatgpt答案参考

文章链接:https://news.yynnw.com/168.html

该作品系作者结合个人学习经验及互联网相关知识整合。如若侵权请通过投诉通道提交信息,我们将按照规定及时处理。

标签:

最新文章

猜你喜欢