动机

果然读者是第一生产力,自从有友友反馈RSS订阅不到我的脑电波(疯言疯语)后,我就下定了决心解决这个问题,在请教了chatgpt老师后,仅用两个小时就搞定了这个功能,其实很多事情都没有我们想象中的那么困难,只要你起步去做,就会发现这件事情——半步就走到头了。

方法

废话不多说,直接上代码:

// 将 shuoshuo 类型的帖子加入到 RSS feed 中
function custom_rss_query($query) {
    if ($query->is_feed) {
        $query->set('post_type', array('post', 'shuoshuo')); // 添加 'shuoshuo' 类型
    }
    return $query;
}
add_filter('pre_get_posts', 'custom_rss_query');

// 只在 RSS 中为没有标题的 shuoshuo 自动生成默认标题
function add_default_title_to_rss_shuoshuo($title, $post_id) {
    if (is_feed()) {  // 检查是否是 RSS feed
        $post_type = get_post_type($post_id);
        
        if ($post_type == 'shuoshuo' && $title == '') {
            return '脑电波'; // 只在 RSS 中为无标题的说说设置默认标题
        }
    }
    
    return $title;
}
add_filter('the_title', 'add_default_title_to_rss_shuoshuo', 10, 2);

这个代码写在哪呢?可以写在主题的functions.php里,但是考虑到可能存在的更新覆盖(虽然主题大大已经停更很久了),我还是强烈安利你写在Snippets这个插件里,这个插件可以更直观清晰地管理附加代码,包括PHP、HTML、CSS、JavaScript等都能写。我也是今年才发现这个好东西,如果早点知道还能这么操作可能就不会去自己做插件了哈哈。

保存成功后可以去feed页面查看一下是否添加成功,比如我的订阅地址是https://crowya.com/feed

注意如果要在手机RSS阅读器里看到效果,可能需要清除一下缓存,WP Super Cache或者Autoptimize的缓存都清除一下试试,之前的评论验证码bug极有可能就是Autoptimize缓存未更新的问题。

如果你的RSS只显示10条内容,可以在WordPress自带设置里修改。

如果你好奇我的RSS结尾信息是怎么添加的,那是因为Yoast SEO刚好有这个设置我就用上了哈。

最后推荐一个安卓端的RSS阅读器:Read You,颜值还怪好看的哈,功能也简洁,对标的应该是iOS的Reader,最重要的还是免费开源。之前的inoreader为啥不用了?全平台还是香的,但是我发现它是在线更新,文章获取频率是固定的,没法第一时间手动刷新,对于我们这种需要实时调试的博主来说就有点鸡肋了,而Read You就只是单纯地从本地获取服务器内容,离线阅读器,随时都可以手动更新。

不过测试的时候最好清空一下所有文章哈,有可能他发现本地存过某篇文章就跳过更新了,这样有些标题可能还是旧的。

就酱紫吧,终于在中秋假期拔掉了这个flag,祝大家中秋节快乐!