不装插件, 也能在 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" ]

效果:

  • 不装插件, 也能在 WordPress 博客中显示相关文章
    这篇文章介绍了如何在 WordPress 中通过自定义短代码 show_posts,按关键词显示相关文章列表。该方法基于 WordPress 内置搜索机制,类似于 /?s=keyword 查询,并支持设置显示文章数量以及是否显示文章摘要。相比安装额外插件,这种方式更加轻量、可控,也更适合需要简单相关文章推荐功能的博客。 如何在 WordPress 中不用插件显示相关文章 用短代码在 WordPress 文章中插入相关文章 WordPress 自定义短代码:按关键词显示相关文章 轻量级 WordPress 相关文章功能实现 使用…
  • WordPress 如何让 RSS feed 输出全文?
    WordPress 如何让 RSS feed 输出全文? WordPress RSS 设置全文输出教程 教你让 WordPress 的 RSS 订阅显示全文 WordPress:让 RSS 订阅源输出完整内容的三种方法 修改 WordPress /feed 输出全文的完整指南…
  • 为博客WordPress添加两个显示十大文章的短指令 shortcode
    每年年底看着很多博主都会列出今年最佳十大文章啥的作一个总结,这事以前我也干过,不过以前是登陆服务器,连接数据库,然后跑几个SQL指令,得到结果,然后拷贝到文章中,很麻烦,而且这结果还是当下的,当SQL跑出来后结果就静态了。 其实,可以通过 shortcode 短指令的方式把这个功能添加到 wordpress 博客中。 WordPress 短指令:获得十大评论最多的文章 这个短指令有几个参数可以配置: “year”:帖子年份,可选,如果没有指定年份,则是基于当年博客中的所有文章来统计。 “type”:这个是HTML列表的类型,默认是 ol(ordered list) 也可以选择 ul(unordered list) “urltype”:博客链接的方式(默认是short),可以是 full 也可以是 short。这里提供了两种方式,但实际上你可以稍微改一下代码自定义…
  • 添加短代码(Short Code Function)以在 WordPress 帖子或页面中包含任何 PHP 或 HTML 文件
    有时候, 我们想要在WordPress的帖子或页面中包含 PHP 或者 HTML 或者其它外部文件, 这时我们可以使用以下PHP代码在WordPress中先添加一个短代码Short Code Function功能: function include_php_in_wordpress($atts) { extract(shortcode_atts( array( 'src' => '' ), $atts)); if…
  • 给WordPress提了个BUG得到了一件免费的T-Shirt
    WordPress(中文译为”博客园”)是一个免费开源的内容管理系统(CMS), 用PHP编写, 并与MySQL或MariaDB数据库配对使用. 它的压缩后的文件大小大约为16M. WordPress是一个基于PHP和MySQL开发的博客平台, 也可以用作内容管理系统(CMS). 它提供了一个强大的模板系统以支持丰富的设计选项, 允许用户创建功能齐全, 优雅的网站. WordPress最初是作为一个博客平台出现的, 但是如今已经被用来构建各种不同类型的站点, 包括新闻, 零售, 电子商务, 教育, 旅行, 非盈利机构和企业站点. 将近4年前, 我向WordPress提交了我的第一个Bug报告, 但在讨论后,…
  • 密码或IP地址保护 WordPress 博客的 wp-admin 目录(并且允许 admin-ajax.php)
    wp-admin 文件夹是 wordpress 安装中最重要的文件夹. 它主要包含控制仪表板 Dashboard 等代码. 有一个重要的文件 admin-ajax.php 在正常的博客功能中也需要被用到, 所以单纯的屏蔽整个 wp-admin 也许会损坏一些正常的功能. 最近几天, 我收到了一些邮件警报, 因为我装了一个 Limit Login Attempts 的插件.…
  • 通过 jQuery Migrate Helper 来解决升级 WordPress 5.5 带来的问题
    每次Wordpress升级, 我都是第一时间点更新的, 因为很久之前, 曾经有一次很严重的Wordpress安全事件(虽然不是发生在我身上), 后台被黑, 原因就是Wordpress没有及时更新去修复一些安全隐患. WordPress 5.5 更新最重要的就是图片 Lazy Load, 这可以使博客打开速度又快了一些, 因为图片只会在页面拉到当前视窗的时候才被加载. 装完之后, 立马就发现不对劲了, 经典编辑器Classic Editor只能使用全HTML模式. 图片无法上传(添加媒体), 还有就是b, i,…
  • 如何删除wordpress仪表盘的 “我爱水煮鱼” 模块?
    “我爱水煮鱼” 是一款中文比较有名的 WordPress 博客优化插件, 提供了相当多的功能. 我很久之前装了, 后来觉得不好用就卸载了. 谁知插件很霸道, 虽然在 wp-contents/plugins 插件目录下已经把整个文件夹删除了, 插件列表也找不到该插件了, 可是在WP仪表盘上还是能看到 “我爱水煮鱼” 的模块. 这个模块主要就是显示一些文章, 没啥用. 考虑到安全和隐私问题, 果断要进行清理移除干净. 修改(子)主题的…

如果不显示文章摘要:

[ 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

本文一共 610 个汉字, 你数一下对不对.
不装插件, 也能在 WordPress 博客中显示相关文章. (AMP 移动加速版本)
上一篇: 停交了Zurich重疾险, 白交了十年?

扫描二维码,分享本文到微信朋友圈
72008?noamp=mobile%2Famp 不装插件, 也能在 WordPress 博客中显示相关文章 PHP wordpress 小技巧

评论