小赖子的英国生活和资讯

不装插件, 也能在 WordPress 博客中显示相关文章

阅读 桌面完整版

这篇文章介绍了如何在 WordPress 中通过自定义短代码 show_posts,按关键词显示相关文章列表。该方法基于 WordPress 内置搜索机制,类似于 /?s=keyword 查询,并支持设置显示文章数量以及是否显示文章摘要。相比安装额外插件,这种方式更加轻量、可控,也更适合需要简单相关文章推荐功能的博客。

如何在 WordPress 中不用插件显示相关文章
用短代码在 WordPress 文章中插入相关文章
WordPress 自定义短代码:按关键词显示相关文章
轻量级 WordPress 相关文章功能实现
使用 WP_Query 创建 WordPress 相关文章短代码
不装插件,也能在 WordPress文章中显示相关文章
WordPress 文章内显示相关内容的简单方法
用内置搜索实现 WordPress 相关文章推荐
给 WordPress 添加一个轻量级 show_posts 短代码
WordPress 短代码实战:显示相关文章标题和摘要

在 WordPress 中,你可以通过向主题的 functions.php 文件中添加代码来创建自定义短代码函数。建议将代码添加到子主题中,这样可以避免主题更新时被覆盖。

下面的示例添加了一个名为 show_posts 的短代码,你可以在文章中使用它来显示一组相关的文章。这些相关文章会通过 WordPress 内置的搜索机制获取,类似于 /?s=keyword 查询参数的效果。你还可以指定要显示的文章数量,并选择是否在列表中显示文章摘要。

与额外安装一个 WordPress 插件相比,这种短代码方式更加轻量,而且你可以完全控制代码本身。只要实现方式简单且安全,它通常也能减少不必要的性能开销。而且短代码比较灵活,你可以在文章中任意地方显示。插件一般只能在文章后面显示相关文章。

使用方法很简单:将下面的代码复制并粘贴到你的 functions.php 文件中。然后,在任意文章或页面中使用 show_posts 短代码,就可以插入相关文章列表。

比如:

[ show_posts keyword="wordpress" number="8" show_excerpt="true" ]

效果:

如果不显示文章摘要:

[ show_posts keyword="php" number="5" show_excerpt="false" ]

效果:

默认显示8篇文章,默认不显示文章摘要。

function show___posts_func($atts) {
    $atts = shortcode_atts(
        array(
            'keyword'      => '',
            'number'       => 5,
            'show_excerpt' => 'true',
        ),
        $atts,
        'show_posts'
    );

    $keyword = sanitize_text_field($atts['keyword']);
    $number = max(1, min(20, intval($atts['number'])));
    $show_excerpt = filter_var($atts['show_excerpt'], FILTER_VALIDATE_BOOLEAN);

    if ($keyword === '') {
        return '';
    }

    $query = new WP_Query(array(
        'post_type'           => 'post',
        'post_status'         => 'publish',
        's'                   => $keyword,
        'posts_per_page'      => $number,
        'ignore_sticky_posts' => true,
        'no_found_rows'       => true,
    ));

    if (!$query->have_posts()) {
        return '';
    }

    $output = '<ul class="show-posts-list">';

    while ($query->have_posts()) {
        $query->the_post();

        $output .= '<li>';
        $output .= '<a href="' . esc_url(get_permalink()) . '">';
        $output .= esc_html(get_the_title());
        $output .= '</a>';

        if ($show_excerpt) {
            $excerpt = get_the_excerpt();

            if ($excerpt) {
                $output .= '<br><small>' . esc_html(wp_trim_words($excerpt, 20)) . '</small>';
            }
        }

        $output .= '</li>';
    }

    $output .= '</ul>';

    wp_reset_postdata();

    return $output;
}

add_shortcode('show_posts', 'show___posts_func');

Wordpress博客技术文章

英文:WordPress Short Code Function Showing Relevant Posts

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version