惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy International News Feed
Simon Willison's Weblog
Simon Willison's Weblog
I
Intezer
Spread Privacy
Spread Privacy
The Hacker News
The Hacker News
P
Palo Alto Networks Blog
TaoSecurity Blog
TaoSecurity Blog
S
Secure Thoughts
Google Online Security Blog
Google Online Security Blog
H
Heimdal Security Blog
N
News | PayPal Newsroom
Attack and Defense Labs
Attack and Defense Labs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 【当耐特】
Webroot Blog
Webroot Blog
小众软件
小众软件
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
PCI Perspectives
PCI Perspectives
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
Cloudbric
Cloudbric
AI
AI
WordPress大学
WordPress大学
博客园 - 聂微东
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
Hacker News: Ask HN
Hacker News: Ask HN
H
Hacker News: Front Page
博客园 - Franky
V
V2EX
Schneier on Security
Schneier on Security
G
GRAHAM CLULEY
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
H
Help Net Security
量子位
S
Security @ Cisco Blogs
大猫的无限游戏
大猫的无限游戏
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recorded Future
Recorded Future
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
C
Cisco Blogs
S
Security Affairs

山月

在VS Code配置Obsidian風格Markdown編輯環境 – 山月 在Windows通过LM Studio使用Zotero MCP – 山月 禁用WordPress中Jetpack的AI助手按钮 – 山月 WordPress/MCP Adapter安装与维护指南 – 山月 WordPress服务器权限与所有权配置详解 – 山月 在Windows上為GnuCash啟用線上報價 (Finance::Quote) – 山月 Gitea Docker /var/empty 权限问题除错总结 – 山月 Bookwyrm由0.7.5升级至Production(e217a17)完整过程及疑难解答 – 山月 用正则表达式修改ruby标签 – 山月 进入不断重启的Docker容器的命令行之方法 – 山月 自建Bookwyrm无法查询远端用户?——开启数据库扩展 – 山月 BookWyrm无法增添书本、作者、阅读进度……?——解决数据库自增序列问题 – 山月 俾Docker容器中的应用访问宿主机上的数据库服务 – 山月 QNAP NAS使用者注意!千万莫对MariaDB做这件事…… – 山月 解决Wikibase手动导入数据后无法新建实体之问题 – 山月 辰年再訪神保町 – 山月 PHP-FPM站点池配置调优以解决WordPress过度占用系统资源之问题 – 山月 如果Linux软件包常规升级失败——以python3-update-manager为例 – 山月 解决站点526报错:SSL证书配置错误 – 山月 風挾着陽光來 – 山月 和A.N.R.GHG插件说bye-bye – 山月 WordPress页面链接末尾出现“?swcfpc=1”后缀,是怎么回事? – 山月 安装、维护Monica PRM的一些笔记 – 山月 清理服务器空间的着手点 – 山月 关于Joplin Server文件上传大小上限 – 山月 如何优化PHP文件上传大小:完整指南 – 山月 WordPress站点部分地出现“严重错误”的一些可能的解法 – 山月 批量更改WordPress媒体URL – 山月 自托管WordPress编辑文章出现问题的排查法 – 山月 於Docker安裝sudo之方法 – 山月 于YunoHost网页版后台装pgAdmin4失败之解决方法 – 山月 解决WordPress多站点网络下异域名子站登录失败的问题 – 山月 Linux的SWAP配置建议与方法 – 山月 如何从一个.sql文件中恢复(导入)数据到MySQL数据库 – 山月 橙色的天,金色的鯉魚 – 山月 設置SoftBank光IP地址固定分配時MAC地址報錯之解決方法 – 山月 解决自托管WordPress与Jetpack通信之不畅 – 山月 解决WordPress上传超过100M文件失败的问题——用Cloudflare作为CDN服务时 – 山月 自托管WordPress迁至新服务器时可能遇到的一些问题 – 山月 Jetpack server port value报错之解决方法 – 山月 Nextcloud服务器目录中/data/updater-(12个英数字)文件夹可删除 – 山月 使WP IndieBlocks、Webmention两插件配合工作 – 山月 导致WordPress钩子(hooks)重复调用的一个可能性——插件重复安装 – 山月 为WordPress自定义贴文类型设置默认格式(post format) – 山月 为Micropub客户端所发内容设置默认post type – 山月 让WordPress的自定义post type支持post formats – 山月 在WordPress通过古腾堡块编辑器验证您的Mastodon身份 – 山月 如何将Mastodon上关注的人导入至Friendica – 山月 在WordPress上发Mastodon的一个选项:Shortnotes+Share on Mastodon – 山月 祝WordPress 20周年快乐!(节译) – 山月 更改IndieBlocks札记(note)、喜欢(like)slug之方法 – 山月 改变Friendica域名之方法 – 山月 爲WordPress添上在線Markdown、HTML互轉工具 – 山月 內排散記 – 山月 长毛象(Mastodon)简介:多中心化、细粒度公开、多样时间轴 – 山月 教ChatGPT讲福州话 – 山月 WordPress项目管理插件使用心得 – 山月 汉字词“地震”之前,日语中表达地震的本土词 – 山月 “幸”与“福”的区别 – 山月 Koha 22.05安装教程(于Ubuntu 20.04 LTS) – 山月 《日本外來語辭典》讀書筆記 – 山月 “传毒”——童年游戏回忆一则 – 山月 WordPress多站点网络分布于不同主域名时登录管理后台出现cookie错误的解决方案 – 山月 如何为WordPress多站点设置不同的子目录、子域名,甚至主域名? – 山月 重温《日语的历史》 – 山月 东京教父:关于爱与救赎 – 山月 2021年末,豆瓣更新了它的条款…… – 山月 WordPress报错“Briefly unavailable for scheduled maintenance.”的解决方法 – 山月 日语里的「原形」「辞书形」「终止形」是什么? – 山月 《福州方言大词典》读后感 – 山月 一種美觀的由Hubzilla分享RSS資訊的方法 – 山月 《我们仨》中与《宋诗选注》相关的记载 – 山月 亂彈文忠公宴番仔事 – 山月 一本清代土腔谜语集引发的回忆 – 山月 迎圣火 – 山月 凝滞在方言里的时光 – 山月 站在新庄园门前 – 山月 长星照耀州府 – 山月 虚拟币与赛博矿难 – 山月 记忆、记录与创造 – 山月 几日来写作微信推文的反思 – 山月 对OKR工作管理法的归纳总结 – 山月 同人誌之夢 – 山月 那里人很爱诗词 – 山月 从语言学看两性语言差异 – 山月 南门兜素菜馆 – 山月 闽海痛史 – 山月 东京的西方建筑遗产 – 山月 真实的华人电影 – 山月 记观《只有野兽知道》 – 山月 记早稻田祭 – 山月 《鬼灭之刃》日语札记 – 山月 颱風前夜的仙草凍 – 山月 首篇博文 – 山月 我到底是转厝了 – 山月 CM96暴走记 – 山月 薄暮逐島 – 山月 人与神的共振 – 山月 逐集罔讲罔听 – 山月 以往不谏 – 山月
为WordPress Syndication Links插件添加新的站点与图标的实现方法 – 山月
2025-05-07 · via 山月

在实际使用Syndication Links插件的过程中,如果经常发布到一些插件默认不支持的网站,就会遇到无法显示对应站点图标和名称的问题。本文记录了如何通过不直接修改插件源文件的方式,为该插件增加新的站点映射与图标,以避免更新时丢失修改。

插件的站点映射机制

Syndication Links插件在includes/class-syn-link-domain-icon-map.php中维护了一个私有静态数组$map,用于将域名映射到对应的图标名。例如:

private static $map = array(
    'twitter.com'  => 'twitter',
    'facebook.com' => 'facebook',
    // ...
);

当页面需要显示某个链接的图标时,插件会:

  1. 从URL提取域名
  2. 检查$map数组是否有该域名的映射
  3. 如果有,则按映射名去svgs目录中加载对应的SVG图标文件
  4. 同时从includes/simple-icons.phpsimpleicons_syn_get_names()函数获取该映射名对应的显示名称

如果$map中没有对应域名,插件会尝试根据域名的中间部分去找图标文件;如果仍找不到,就会显示一个默认的website图标。

要添加新的站点映射,需要改动三个地方

  1. 域名映射表$map中添加新域名及其图标名,例如:

    'sanguok.com'         => 'wordpress',
    'chatan.cc'         => 'iceshrimp',
    'library.chatan.cc'         => 'bookwyrm',
    
  2. 图标名称映射includes/simple-icons.php中的simpleicons_syn_get_names()函数中,添加新的图标名与显示名称,例如:

    'bookwyrm' => 'Bookwyrm',
    
  3. SVG图标文件 在插件的svgs目录下放置与图标名一致的.svg文件,例如bookwyrm.svg。 文件内容需要是有效的SVG代码,来源可以是自己绘制的,或从SVG Repo等网站下载并调整。

避免插件更新覆盖修改

如果直接编辑插件的源文件,在更新插件后修改会丢失。 解决办法是使用Code Snippets插件,在运行时通过钩子动态扩展映射和图标名。

示例:通过Code Snippets扩展映射

<?php
// 扩展域名映射
add_filter('syn_link_mapping', function($mapped, $url) {
    $custom_map = array(
        'sanguok.com'         => 'wordpress',
        'chatan.cc'         => 'iceshrimp',
        'library.chatan.cc'         => 'bookwyrm',
    );

    $host = str_replace('www.', '', parse_url($url, PHP_URL_HOST));
    if (isset($custom_map[$host])) {
        return $custom_map[$host];
    }
    return $mapped;
}, 10, 2);

// 扩展图标名称映射
add_filter('simpleicons_syn_get_names', function($icons) {
    $icons['bookwyrm'] = 'Bookwyrm';
    return $icons;
});

说明:

  • syn_link_mapping过滤器允许在插件完成映射后,动态修改映射结果
  • simpleicons_syn_get_names是一个我们假设添加的过滤器,如果插件没有,需要通过其他方式覆盖函数返回值(可能需要额外包装)

关于SVG文件

  • SVG文件必须放在插件svgs目录下,否则插件找不到。
  • 更新插件时,svgs目录里的文件也可能被覆盖或删除,建议在更新前备份。

实际操作步骤

  1. 准备好新的域名与图标名映射表
  2. 准备对应的SVG文件
  3. 将SVG文件放到插件的svgs目录中
  4. 在WordPress后台Code Snippets插件中创建一个新的Snippet,将上面的PHP代码粘贴进去
  5. 保存并启用Snippet
  6. 刷新前台页面验证是否生效

总结

  • 核心流程是域名 → 映射名 → SVG 图标 → 显示名称
  • 不直接改插件源码,使用钩子和Code Snippets是比较安全的做法
  • SVG文件仍然需要放在插件目录中,但要注意更新时备份
  • 如果插件未来提供更灵活的API(例如允许自定义SVG路径),则可以完全不改动插件目录