普通视图

差点又买了一台机器

作者 大灰
2026年5月22日 23:52
星期天休息,看了一下机器硬盘又快炸了,有点头大,记得去年这个时候硬盘也是爆满了,就是这么巧合。 一直有关注某家的机器,一直没入手,关键是丢数据搞的闹心了。今天鬼使神差买了这家的机器,买完真是满心欢喜,不用再次担心硬盘不够用,现实却是啪啪打脸,装了一个MariaDB,竟然耗时3个多小时!居然不如RN、CC,硬盘看着可以处理器是真辣鸡,本来不打算退的,内心还是接受不了。果断联系客服退款,一切顺利钱拿到手,再也不买这家了。 瓦工的机器最后才发现是我开启了统计,结果日志就占用十几G,我去,这玩意开启真的要设置好期限,到期清除。忘了就跟我一样硬盘爆满,一头雾水…… wordpress 7.0都发布了,从 […]

从RSS订阅器到知识库:我的网站整合之路

作者 老王
2026年4月5日 12:40
为解决网站工具(RSS订阅器和笔记页面)与主站分离的问题,通过学习和AI辅助,成功将它们独立开发为网站插件。不仅解决了技术兼容性问题,还统一了网站架构和用户体验。

更新Linux

作者 大灰
2026年4月5日 11:29
时间好快,又一个月没更新了,也是没啥想记录的,今天趁着假期更新了下Linux系统补丁。   一切都挺顺利的,更新没有出啥幺蛾子,手里的几台机器全部更新了。平淡如水,我现在真的“强的可怕”... 自从那些子站点数据丢失了就没有折腾的欲望,够用就好。 Wordpress上个月更新真是勤快,安全版本更新来了好几波,我设置了自动更新安全版本倒也不需要我操心,期待7.0新版,懒得用AI折腾静态或者自己搞一个了,用现成的挺好! 最后又折腾了备份,还是不放心,仔细盘了下现在的备份方案,唯一的缺点就是费硬盘,但是最稳妥。就这样了。

博客被恶意触发 WordPress 找回密码,顺手做了一次安全加固

作者 老灵
2026年3月30日 16:10

今天顺手处理了一件小事:博客被人恶意触发了 WordPress 的“找回密码”功能,邮箱里陆续收到了密码重置邮件。

严格来说,这不算真正入侵,更像是一种低成本的自动化骚扰和探测。但如果不处理,确实挺烦,而且也说明站点的默认暴露面还在。

这篇文章简单记录一下处理过程,给同样用 WordPress 的朋友做个参考。

一、现象:有人反复触发密码重置

一开始是邮箱里收到 WordPress 的密码重置邮件,内容大概是:

  • 有人为某个账户申请了密码重置
  • 邮件里会带重置链接
  • 还会显示一个请求来源 IP

最开始看到这种邮件,第一反应通常会是:

  • 是不是后台密码泄露了?
  • 是不是邮箱被盯上了?
  • 是不是 WordPress 后台要被撞开了?

后来冷静看了一下,发现这类行为很多时候并不是“已经攻进来了”,而是有人或者脚本在做下面几件事:

  1. 探测这个站是不是活的
  2. 测试这个用户名是否真实存在
  3. 批量触发找回密码,制造邮件骚扰
  4. 为后续爆破、撞库、探测登录入口做准备

说白了,很多时候并不是高水平攻击,而是全网脚本扫 WordPress 默认入口,扫到谁就试谁。

二、先判断:这不等于已经被入侵

后来逐项检查了一下,当前状态是:

  • WordPress 管理员密码足够强
  • 邮箱已经开启二次验证
  • 博客主邮箱密码已更新
  • 密保邮箱密码也更新了
  • xmlrpc.php 已经封掉
  • 后台没有异常管理员账号
  • 主题、插件、站点内容暂时没有发现异常

这说明一个关键点:

有人在骚扰,不等于已经失守。

只要密码强度够、邮箱没被控、后台没有异常账号,这类“找回密码邮件”更多是噪音,不是结果。

三、关于邮件里显示的 IP,不一定是真实攻击者 IP

WordPress 的重置邮件里会显示一个 IP。

但如果网站前面挂了 Cloudflare,这个 IP 很可能只是 Cloudflare 的代理节点 IP,不一定是真实来源地址。

也就是说,邮件里看到一个看似具体的 IP,不代表就找到了对方真身。
如果源站没有正确恢复真实访客 IP,WordPress 或服务器日志里拿到的,很多时候只是 CDN / 代理层 IP。

所以这里没必要过度研究那个 IP,本质问题还是:

默认的找回密码入口还开着,别人就还能继续触发。

四、这次处理思路:先止血,再观察

这次没有去做太激进的改造,比如:

  • 不去硬改 /wp-admin/ 目录
  • 不去直接折腾数据库
  • 不去大幅修改 Nginx 配置
  • 不去把后台搞得特别复杂

因为对一个普通博客来说,很多时候最优方案不是“堆复杂度”,而是:

优先把最烦、最直接的问题掐掉。

处理顺序大概是这样的:

1. 更新博客邮箱密码

先把和 WordPress 绑定的邮箱密码换掉。

2. 更新密保邮箱密码

因为很多人会忘记,密保邮箱本身也是安全链路的一部分。

3. 修改 WordPress 管理员密码

把后台密码也一起换掉,避免心理上总觉得不踏实。

4. 检查后台管理员账号

确认没有陌生管理员,没有异常用户。

5. 确认 xmlrpc.php 已封

这个接口长期是 WordPress 被扫的重点目标之一,没必要开着。

五、最关键的一步:直接禁用 WordPress 找回密码功能

后面发现,继续研究“是谁在点找回密码”意义不大。
最直接、最有效的办法其实是:

直接把 WordPress 找回密码功能关掉。

如果站点只有自己在维护,平时也根本不依赖“忘记密码”这个入口,那么这个功能完全可以关掉。

我最后加的是这一行:

add_filter('allow_password_reset', '__return_false');

加上之后,再去访问 WordPress 的密码重置页面,输入用户名或邮箱,系统就会直接提示:

不能重设该用户的密码

效果很直接:

  • 不再收到密码重置邮件
  • 对方继续点也没用
  • 邮箱骚扰当场结束

对我这种个人博客场景来说,这一步的性价比非常高。

博客被恶意触发 WordPress 找回密码,顺手做了一次安全加固

六、为什么不继续折腾更多东西?

其实还可以继续做很多事,比如:

  • 隐藏默认登录入口
  • /wp-login.php 加 Challenge
  • /wp-admin/ 加额外保护
  • 把管理员用户名改成随机串
  • 配置更严格的 Cloudflare WAF 规则

这些都没错。

但从这次的实际情况来看,已经完成了下面这些动作:

  • 邮箱安全加固
  • 后台密码更新
  • 异常账号排查
  • XML-RPC 封禁
  • 找回密码功能关闭

对一个普通博客来说,这已经足够把这次问题压下来了。

很多时候,安全不是一味堆配置,而是:

抓主要矛盾,先把最烦、最常被滥用的入口关掉。

七、这件事的本质

这次也算再次验证了一件事:

WordPress 本身不是不能用,问题往往在于默认入口太公开、默认行为太“热情”

像下面这些默认点位,基本都是被脚本长期盯着的:

  • /wp-login.php
  • /wp-admin/
  • xmlrpc.php
  • 找回密码功能

所以对个人站长来说,安全思路不用太复杂,记住一句话就行:

默认暴露面越少,自动化脚本能玩的东西就越少。

八、最后总结

这次博客被恶意触发找回密码,没有造成真正损失,但确实是一次提醒:

  • 邮箱安全很重要
  • 密保邮箱也不能忽略
  • WordPress 默认找回密码功能,不一定非留着不可
  • 看到重置邮件不必马上慌,先判断是不是“骚扰”还是“已入侵”
  • 对个人博客来说,最有效的往往不是复杂方案,而是直接关闭没必要的暴露面

目前这件事算是先处理完了。
对方再继续点找回密码,也只能白忙活。

说难听点:

很多这种操作,本质上就是脚本到处乱撞;谁入口开着,谁就多挨两下。

把门关上,世界立刻清净不少。


附:本次实际做的几件事

  • 更新博客绑定邮箱密码
  • 更新密保邮箱密码
  • 确认邮箱已开启二次验证
  • 修改 WordPress 管理员密码
  • 检查无异常管理员账号
  • 确认 xmlrpc.php 已封
  • 禁用 WordPress 密码重置功能

快速搞定macOS Web环境:PHP+Nginx+MySQL+WordPress 配置指南

作者 老王
2025年12月14日 22:32
因频繁折腾网站易引发线上故障,尝试 MAMP 免费版搭建本地测试环境,却受限于功能单一、数据导入不便及环境差异导致的代码报错问题,遂放弃集成工具,选择在 macOS 系统手动配置 PHP+Nginx+MySQL 环境并部署 WordPress

WordPress插件HTACCESS Manager

2025年11月19日 16:59
AI智能摘要
HTACCESS Manager是一款适用于Apache及LiteSpeed服务器的WordPress插件,旨在安全智能地管理.htaccess文件中的重定向规则。支持强制HTTPS、WWW与根域名互跳、二级域名配置,并自动生成优化规则,兼容多种环境且不影响其他插件规则。提供手动复制、自动更新与安全移除功能,确保规则准确生效。需注意备份.htaccess文件,不适用于Nginx服务器。
— 此摘要由AI分析文章内容生成,仅供参考。

我写这个插件的目的,就是为了不去手动直接编辑.htaccess文件。

本插件适用于Apache、LiteSpeed(含OpenLiteSpeed和LiteSpeed Enterprise)服务器,也适用于其他兼容Apache规则的服务器。

以下内容为AI通过阅读源代码后生成,并经本人细致修改。


HTACCESS Manager

一个专业的WordPress插件,用于智能管理.htaccess文件中的重定向规则。支持HTTPS强制重定向、WWW与根域名跳转配置,以及二级域名站点支持。

功能特点

🔒 强制HTTPS重定向

  • 自动将所有HTTP请求重定向到HTTPS
  • 确保网站安全连接

🌐 灵活的域名跳转配置

  • WWW跳转到根域名www.example.comexample.com
  • 根域名跳转到WWWexample.comwww.example.com
  • 自由选择跳转方向

🏷️ 二级域名支持

  • 专门针对二级域名站点的优化配置
  • 启用后只强制HTTPS,不处理WWW跳转

⚡ 智能规则管理

  • 自动生成优化的.htaccess规则
  • 不干扰其他插件的现有规则
  • 安全的规则添加和移除机制

🛡️ 安全可靠

  • Must-use插件支持,确保高可靠性
  • 精确的规则匹配,避免误删其他配置
  • 完整的卸载清理机制

安装方法

方法一:手动安装

  1. 下载插件ZIP文件
  2. 在WordPress后台进入【插件】→【安装插件】→【上传插件】
  3. 选择ZIP文件并上传
  4. 激活插件

方法二:FTP安装

  1. 解压插件文件到 wp-content/plugins/htaccess-manager/
  2. 在WordPress后台【插件】页面激活”HTACCESS Manager”

使用方法

基本配置

  1. 进入【设置】→【HTACCESS 管理】
  2. 根据您的需求配置选项:
    • 是否为二级域名:如果使用类似 sub.domain.com 的地址请启用
    • 重定向类型:选择WWW与根域名的跳转方向
    • 自动更新:启用后设置更改时自动更新.htaccess文件

配置示例

场景1:主域名站点,WWW跳转到根域名

www.example.com → example.com
http → https

配置:

  • 是否为二级域名:❌ 否
  • 重定向类型:✅ WWW跳转到根域名

场景2:主域名站点,根域名跳转到WWW

example.com → www.example.com
http → https

配置:

  • 是否为二级域名:❌ 否
  • 重定向类型:✅ 根域名跳转到WWW

场景3:二级域名站点

sub.example.com → https://sub.example.com
(不处理WWW跳转)

配置:

  • 是否为二级域名:✅ 是
  • 重定向类型:自动禁用

手动操作

  • 复制规则:手动复制生成的规则到.htaccess文件
  • 手动更新:强制更新.htaccess文件
  • 移除规则:安全移除所有本插件添加的规则

生成的规则示例

WWW跳转到根域名 + HTTPS

# BEGIN HTACCESS Manager
RewriteEngine On

# 同时处理 HTTPS 和 WWW 重定向
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
# END HTACCESS Manager

二级域名 + 只强制HTTPS

# BEGIN HTACCESS Manager
RewriteEngine On

# 强制HTTPS重定向(二级域名)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# END HTACCESS Manager

兼容性

测试环境

  • ✅ WordPress 5.0+
  • ✅ PHP 7.4+
  • ✅ Apache 2.4+
  • ✅ LiteSpeed(含OpenLiteSpeed和LiteSpeed Enterprise)服务器
  • ✅ 多站点网络

插件兼容

  • ✅ 与大多数缓存插件兼容
  • ✅ 与安全插件兼容
  • ✅ 不影响其他.htaccess规则生成插件

故障排除

常见问题

Q: 插件激活后网站出现重定向循环? A: 检查服务器是否已配置SSL证书,或尝试清除浏览器缓存。

Q: .htaccess文件无法写入? A: 确保.htaccess文件权限设置为644,或使用手动复制功能。

Q: 规则没有生效? A: 确认服务器支持mod_rewrite模块,检查Apache配置。如果是OpenLiteSpeed服务器,可能需要重启OpenLiteSpeed服务。

Q: 如何恢复默认设置? A: 停用并重新激活插件,或使用”移除规则”功能。

日志检查

如果遇到问题,请检查:

  1. WordPress调试日志
  2. 服务器错误日志
  3. .htaccess语法验证

开发者信息

文件结构

htaccess-manager/
├── htaccess-manager.php     # 主插件文件
├── readme.md                 # 说明文档
└── (自动生成)
  └── mu-plugins/
      └── htaccess-helper.php # Must-use插件

钩子函数

插件提供以下WordPress钩子:

  • htaccess_manager_before_update – 规则更新前
  • htaccess_manager_after_update – 规则更新后

自定义开发

如需扩展功能,可参考插件中的规则生成逻辑:

$manager = new HTACCESS_Manager();
$rules = $manager->generate_htaccess_rules();

版本历史

v1.0.2 (当前版本)

  • 增强规则移除安全性
  • 改进空行处理
  • 优化MU插件逻辑

v1.0.1

  • 修复规则冲突问题
  • 添加内容预览功能
  • 改进用户界面

v1.0.0

  • 初始发布
  • 基础重定向功能
  • Must-use插件支持

技术支持

如果您遇到问题或需要帮助,请:

  1. 查看README文档
  2. 检查WordPress错误日志
  3. 联系服务器管理员确认Apache配置

许可证

GPL v2或更高版本

贡献

欢迎提交Issue和Pull Request来帮助改进这个插件。

注意:(1)在使用本插件前,请务必备份您的.htaccess文件。

(2)本插件不适用于Nginx服务器。


下载地址

点击下载或将以下链接复制到浏览器地址栏并敲击回车键:

https://git.localhost.observer/linhaicaoyuan/htaccess-manager

进阶之好物3.0版本

作者 叶子
2025年10月30日 12:31

许久未更新了,这几天抽空将好物插件的后台进行了优化升级,本次升级主要针对插件后台管理方面

3.0版本升级功能如下:

1、增加了好物的xml格式的导入导出功能。

2、增加了好物的批量删除功能

3、重构了整个好物功能的代码,减少冗余代码,增加代码的可维护性、可读性、以及复用性。

4、将好物列表后台卡片化设计

5、调整了排序,根据填写的入手时间早晚来自动排序。

6、评分机制从复选框改为下拉式选项框

7、优化修复多处bug

8、好物功能的后台Ui进行了多方面升级焕新,更符合现代化,并做好响应式设计。

9、这次更新优化内容点太多,就不一一描述

部分截图展示如下:

进阶之好物3.0版本
列表页面
进阶之好物3.0版本
批量删除
进阶之好物3.0版本
增加修改好物页面

网站那点事儿

作者 老王
2025年10月20日 23:23
最近对网站做了次"断舍离":将零散的说说整理成正式文章,修复了足迹和RSS页面的技术问题。最开心的是为小王子制作了线上同学录,永久珍藏童年笔迹。还为友链添加了RSS订阅,方便关注朋友动态。特别感谢小威帮忙解决了评论等级问题,从此不再受WP更新困扰。

【去过】页面上线

作者 大致
2025年9月12日 09:40

最终效果见这里

我这个人既不喜欢旅游,也不喜欢摄影,没出过国也没在国内溜达过几个地方,但这并不妨碍我也有一颗上线足迹地图的心。无奈谷歌地图连不上,百度地图不想连,OSM(OpenStreetMap)既连不上也连不明白,就搁置了。
直到上周,@Dayu上线了他的地图插件,试用之后发现表现形式与期待值有差距,想在帖子下面留言发建议的时候,发现了明明同学的另一份方案。虽然主要是js实现的,只需要知道leaflet这个开源库的名字,我就知道以Wordpress的海量扩展,这回成了!

找到了一个插件和插件的插件,配置之后,算是达到了心目中的效果。
插件使用比较复杂,这里记录一下,给自己个备忘,能帮到人更好。

插件Leaflet Map的配置

插件地址:Leaflet Map
逐一说明一下后台的配置项:
Default Latitude
地图默认纬度
Default Longitude
地图默认经度
Default Zoom
地图默认缩放比
Default Height
默认高度
Default Width
默认宽度
上面五个值可以以短代码参数的形式加到leaflet-map中,如果不加则使用后台的默认参。

Fit Bounds
是否令地图随标记点的范围进行缩放。如果为true,那么地图会自动计算当前所有Marker的中心位置,以及包括所有Marker点的合适的缩放比。可以用默认值,也可以在map中单独设置。

Show Zoom Controls
是否显示缩放按钮

Scroll Wheel Zoom
是否允许滚轮缩放
这项设置之后,在地图上并不是直接用滚轮缩放,而是需要用Ctrl,感觉不便所以我自己没加。

Double Click Zoom
是否允许双击放大
注意如果不显示缩放按钮的话,放大之后就回不来了。

Default Min/Max Zoom
最小和最大放大倍数。最终的放大倍数不仅跟这个后台设定项有关,也跟使用的地图瓦片API有关。

Default Tiling Service
有两个选项,“I will provide my own map tile URL”和MapQuest。MapQuest我考察了一番,感觉太难看,没继续尝试。所以重点说第一个选项,自定义tile URL。
先解释一下什么是tile URL。本插件所依赖的地图服务,叫做Map Tile Server(地图瓦片服务)。它分成Raster、Vector和Static三种形式。本插件使用的是Raster形式,而Dayu和明明同学用的都是Vector形式。Vector的参数更加丰富,Raster配置起来更简便。

※※※Map Tile URL※※※
重中之重!!因为默认的OSM服务访问不了,所以这里必须填一个自定义的。
明明同学找的cartocdn就挺好用的。他使用的light_nolabels是不带标签的版本,换成light_all就是带标签的版本。至于他为什么用不带标签的,自己悟。

https://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png
http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png

这里的{z}{x}{y}都不要动,第一个{s}是指地址里的subdomain,也就是接下来的配置项【Map Tile URL Subdomains】。
有的API是需要API Key的。这样的API都有说明文档,把Key按照人家给的例子粘贴进来即可。
cartocdn对我来说有点太素了,于是周末花了一天时间寻找能用的瓦片服务,结果惨不忍睹,汇报一下成果:
maptiler.com:要注册、被墙。
opentopomap.org:免注册、丑。
stadiamaps.com:要注册、比较流畅、免费用户限流严重
tomtom.com:要注册、慢、地图不详细
here.com:要注册、中文地名乱七八糟
geoapify.com:要注册、速度尚可、账号登录验证需要梯子,服务本身不需要。
至于为啥不找国内的地图服务,是我不想吗?本插件所支持的是Raster服务,也叫zxy服务,客户端GET的结果必须是一张PNG/JPG/WEBP图片。国产的高德和天地图我也试了,根本不是一样的格式。甚至有种说法,说国内不允许提供这种服务。
然后呢,这服务也可以自己搭建,数据和教程也都有,但总觉得这种行为像为了吃顿酱肘子先花一年时间晒酱油,没必要。
兜兜转转一圈,还是要回到cartocdn。什么功不唐捐,屁咧!

Map Tile URL Subdomains
具体填什么要看API的文档说明,像openstreetmap和cartocdn都是abcde或a,b,c,d,e。有的API前面没有前缀那就不填。

Detect Retina
是否检测高清设备。如果上面的瓦片服务中支持@2x,那么选中这项以后,如果leaflet发现使用者用的是高清屏幕,就会自动使用高清地图。窃以为意义不大。

Tile Size
一般情况下服务本身已经设好了,留空即可。

Tile Id
Access Token
用Mapbox的服务才有用。但是我的Mapbox没配明白,只有一个默认的卫星地图能用,这两项也没用上。

Zoom Offset
好像是在zoom的时候自动加减一下这个值,没理解意义。

No Wrap (tiles)
地图是否与经线对齐。(这有啥用?)

JavaScript URLCSS URL
css和js的位置,默认即可。

Default Attribution
地图做成后,右下角的一串版权信息。尊重服务商要求即可。

再往后没用上。
插件装好后,其实已经可以编辑地图了。但因为还有个插件的插件,所以怎么用放后面再说。

插件Extensions for Leaflet Map的配置

插件地址:Extensions for Leaflet Map
跟主插件正相反,这个插件的后台,大多数时间在说怎么用。

Marker Clustering–When you mouse over a cluster it shows the bounds of its markers.
聚合显示时,默认会将聚合的标记点连接起来形成一个多边形。我嫌不好看,勾掉了。

When you click a cluster we zoom to its bounds.
点击聚合点时,直接缩放到所有聚合点的范围。

增加一个leaflet map

语法和关键字很多,但能用上的不多。通常只需要地图、标记点、地形json文件。

leaflet-map
主插件的主函数,用于插入一张leaflet-map。参数就是配置页面的那些,没什么特别的。

leaflet-marker
标记一个地点。参数比较多,挑有用的说。
– lat,lng / address:用于定位标记的位置。lat是纬度,lng是经度。经纬度可以从OpenStreetMap.org上查。国产地图查到的经纬度与OSM查到的有一些偏差,注意要保持一致。而address的数据库偏差非常大,不建议。
– iconUrl:标记用图标。可以是网址,也可以是相对路径,甚至base64代码。如果不设,使用默认的蓝色pin图标。
– title:鼠标移动到标记点上时显示的提示信息。这个与点击标记后显示的内容是两码事。
– iconanchor:图标的锚点偏移。这个参数有点意思,它表示的是你图标的“尖”所在的位置。以默认图标为例,规格是19*25,“尖”在最下方,所以iconanchor就应该是宽的一半和全部的高,也就是10,25。这个参默认项是0,0。每个标记都要自己手动加,相当烦。不过也能够理解,一旦有人用的是左箭头呢?
– opacity:图标的透明度。
– 【leaflet-marker】【/leaflet-marker】之间,放置弹出的html内容。放啥都行,也可以定义css。
另外还有一些参数,我都没用上官网说明文档里都有。

leaflet-geojson
地理信息的json文件。中国的地理信息文件可以在阿里云下载,或者直接引用。建议下载后到mapshaper进行优化后上传,在本地使用。这里非常感谢明明桑,一个优化工具解决了困扰我许久的问题。
– src:地理信息源文件的路径,可以是相对路径或网址。
– color:leaflet提供的属性,边框颜色。
– weight;leaflet提供的属性,边框宽度。
– opacity:leaflet提供的属性,边框透明度。默认的3px蓝色实在是有点虎。缺点是每个marker都需要单独设置。
– fill:leaflet提供的属性,布尔型,是否填充。默认true
– fillColor:leaflet提供的属性,填充颜色,不设则默认使用color
– fillOpacity:leaflet提供的属性,填充颜色的透明度,默认0.2
想一个省一个省点亮的,就下载省级json,想像我这样一个市一个市点亮的,就下载市级json,一次勾一个边即可。话说,我一直认为用省划分习俗非常不科学,甚至用市来划分都不科学。毕竟有粤南粤北、胶东鲁西南,还有江苏十三太保这样的众所周知的文化差异。我甚至觉得应该精确到县。毕竟我们旁边就有一个散装的地级市,我认识一堆人,他们分别来自鲅鱼圈、熊岳、盖州、老边、大石桥,就没有一个称自己是营口人的。但是真正实装以后才发现,县级太困难了,我甚至都没在普兰店歇过脚,自己家都没搞定。

markerclustergroup:聚合分组方法,这是“扩展的扩展”的功能,也是安装它的主要目地。cluster是指将临近的点进行聚合,group是通过关键字对追加的点进行分组。只聚合可以用cluster,只分组可以用leaflet-optiongroup。
– feat:适配项目。可以是【leaflet-marker】中的title或者iconUrl中的一个。参数以部分匹配的方式,对title或者iconUrl形成过滤,然后在右上角形成组别。
– strings:分组过滤用的字符串,用半角逗号间隔。
– groups:分组后显示的字符串。
– position :分组显示位置
– collapsed :分组是否折叠

多说无益,直接举例

【leaflet-map fitbounds】//用fitbounds,就不用关心点的位置和缩放了
【fullscreen】//增加一个全屏按钮
【leaflet-marker lat=38.87430121 lng=121.55204380 iconUrl="/path_to/marker-blue.png" iconanchor="15,40" 】<b>辽师附中</b><i>2012 /04 /<a href="/2012/04/ancient-school-motto.html" target="_blank" rel="noopener">沙河口黑石礁尖山街</a> /街拍 </i><img src="/path_to/imag0114.jpg" alt="imag0114" />【/leaflet-marker】
【leaflet-marker lat=38.88611421 lng=121.63731716 iconUrl="/path_to/marker-blue.png" iconanchor="15,40"  opacity=0.5】<b>西岗中学</b><i>2003 /05 /<a href="/2023/06/post-truth-and-something-before-my-graduation.html" target="_blank" rel="noopener">西岗八一三环街</a> /其他 </i><img src="/path_to/vlcsnap-2023-05-21-17h15m27s675.jpg" alt="vlcsnap-2023-05-21-17h15m27s675" />【/leaflet-marker】
【leaflet-marker lat=38.88890 lng=121.70665 iconUrl="/path_to/marker-yellow.png" iconanchor="15,40"  】<b>棒棰岛</b><i>1993 /08 /中山老虎滩迎宾路 /海滩 </i>【/leaflet-marker】
【leaflet-marker lat=38.93471 lng=121.19765 iconUrl="/path_to/marker-yellow.png" iconanchor="15,40" 】<b>北海王家村</b><i>2018 /08 /旅顺北海王家村 /海滩 </i>【/leaflet-marker】
【leaflet-marker lat=38.98562089 lng=121.65895298 iconUrl="/path_to/marker-yellow.png" iconanchor="15,40"  】<b>蟹子湾</b><i>2015 /04 /<a href="/2015/04/chemical-factories-stories.html" target="_blank" rel="noopener">甘井子甘井子海茂路</a> /海滩 </i><img src="/path_to/BF59AEE251904BC4.jpg" alt="BF59AEE251904BC4" />【/leaflet-marker】
【markerclustergroup feat="iconUrl" strings="blue, yellow" groups="学校, 海滩" collapsed=true】
【leaflet-geojson src="/path_to/dalian.json" color="#FF8888" weight=2 fillOpacity=0.3】//加入大连地图
【zoomhomemap】//调整缩放比
[fullscreen ] [markerclustergroup feat=iconUrl strings=blue, yellow groups=学校, 浴场 collapsed=true ] [zoomhomemap ]

就到这。总之有现成儿的我才不会亲自动手呢。

WordPress集成Mastodon嘟文之插件篇-Include Mastodon Feed

作者 老张
2025年9月8日 20:50

 

WordPress集成Mastodon嘟文之插件篇-Include Mastodon Feed - 第1张图片

前段时间虽然说是“断网”了,还是偷偷折腾了GoToSocial和Mastodon。GoToSocial和Mastodon都属于通过“ActivityPub”协议实现与多个平台的联邦特性与其他平台互联互通。GoToSocial虽然轻量,但是颜值和功能还是没有Mastodon好,最终选择了Mastodon。至于怎么玩Mastodon,要么像我这样自建,要么就用网上的平台,比如官方的mastodon.social和草莓县m.cmx.im。有兴趣的可以一起玩玩!目前我自建的为@laozhang@suo.si,官方平台和草莓县上分别是@laozhang@mastodon.social和@laozhang@m.cmx.im。为什么自建了还在其他平台注册呢,我怕以后我驾驭不了自建的mastodon,毕竟玩的时间久了数据都都会达到十几个G。或是感觉到单独花二百块钱搞服务器来玩mastodon不值的时候,我可能就把自建的关停掉。

东西玩多了,都想把他们“集成”到一起,比如老张博客首页的“最新动态”就是调取用 Typecho 搭建的https://zhangbo.net老张随笔第一篇内容。有兴趣的可以按《WordPress首页调用typecho方法!》的方法来;又比如在Wordpress的页面里显示Memos内容,方法可以按《巧搬空白Koobai大佬Memos页面,完美与博客整合。》来。

不难看出,在Wordpress里调用memos或是Typecho,都是完全靠代码,毕竟像这样玩的人少更甚是memos等太过小众,没有人折腾这东西,想要实现一些功能必须要靠自己才行。而同时玩Wordpress和Mastodon却大有人在,所以你想实现的功能别人都早就折腾过了。就比如在WordPress中集成Mastodon嘟文。先看效果https://laozhang.org/mastodon.html,这是我在博客里集成了@laozhang@suo.si所发的所有嘟文。那实现这个功能就只是简单的一个插件,Include Mastodon Feed。

1.安装Include Mastodon Feed

直接在后台插件菜单里搜索安装即可,并启用。

2.查找Mastodon 用户ID

不管是自建的Mastodon还是其他平台,把下面的代码内换成自己的用户名和相应的域名后在浏览器内打开,即可显示你的ID

https://yourinstance.com/api/v2/search?q=yourusername@yourinstance.com&resolve=true&limit=5

3.创建mastodon页面

在Wordpress后台新建页面,把下面代码换成自己的ID和相应域名即可。(换成英文中括号)

【include-mastodon-feed instance="YOUR-INSTANCE" account="YOUR-ACCOUNT-ID"】

4.根据自己喜好,自定义CSS

这个可以根据自己的喜好,自己折腾。

 

怎么样,插件版是不是太简单了!无脑操作即可!

 

Typecho主题SimpleBlog开源

2025年8月13日 22:15

一次跨越平台的主题移植手记

2025年八月初,我将一款心仪的WordPress主题移植至Typecho平台,并应用于我的技术博客“林海爱折腾”。

在此之前,这款WordPress主题已在我的博客上使用了近一年半的时间(自2024年1月19日至2025年8月11日)。为了获得更好的中文显示效果并修复一些已知问题,我曾对其进行过一番本地化修改,更加适配汉字的显示与阅读美感。

将这款主题移植到Typecho平台的想法,源于两个简单的初衷:

第一,是对这款主题简约风格的喜欢;

第二,我这可是个技术博客,不亲手移植一个主题,怎么对得起“技术”二字呢?(斜眼笑)

整个移植过程由手动编码与AI辅助相结合。主题框架的搭建本身颇为迅速,大约只用了两小时;然而,后续修复bug,却前后持续了一坤天(2.5天)。

这次的移植过程,让我对两个平台的技术框架有了更深的认识。WordPress将诸多功能(如评论系统、jQuery库等)高度封装,开发者仅需一行或寥寥数行代码便可调用;区块主题更是进一步简化,整个主题的源代码只有数百行,却可以实现高度的可定制化。相比之下,Typecho则相对原始,许多功能的实现都需要开发者从零开始构建样式与逻辑,代码的编写显得细致和繁复。对于编程基础几乎为零的我,这个过程稍有不慎便会“落霞与bug齐飞”,过程相当痛苦。

这里我特别说明一件事——评论区的适配耗费了最多的精力,前后投入了约一天半的时间。若完全沿用原主题当中WordPress封装的评论样式,会导致点击“回复”时评论框无法跟随;若尝试用JavaScript修正此问题,又会引发二级及更深层级评论的显示异常。这是一个AI都束手无策的Bug。我最终选择妥协,选择了一个功能稳定且视觉上同样协调的方案。

主题移植完成并稳定运行数日后,一个有趣的插曲,促使我更换了本博客的主题——由于两个博客的主题外观极为相似,仅在header区域有配色差异,我经常会在不经意间混淆它们,输入错误的后台地址,然后看到那抽象的404页面。为了避免再出现这样的事情,更换主博客的主题,成了一个直接有效的选择。

移植后的主题在几天的实际使用中,未再发现明显的问题。当然,我深知代码中或许还残留着一些移植过程中尚未完全清理的冗余代码,只是这些代码完全不影响博客的正常运行与速度。我希望它能对他人有所助益,我决定将其开源。

以下,是对这款移植主题的详细介绍。其中,“SimpleBlog主题介绍”这部分内容,是在AI助手Craft在阅读源代码分析的基础上,由我人工修订而成。


SimpleBlog主题介绍

主题介绍

SimpleBlog是一款为Typecho博客系统设计的简约风格主题,它移植自设计师Anders Norén的经典作品。这款主题追求“简约而不简陋”的设计哲学,旨在为内容创作者提供一个干净、清晰且能全身心专注于文字的展示平台。

设计特点

1. 极简设计风格

SimpleBlog采用极简主义美学,审慎地去除了多余的视觉元素,引导读者的目光聚焦于内容本身。以黑白为主的配色方案,辅以恰到好处的留白与精心编排的版式,共同营造出一种专业且宁静的阅读氛围。

2. 响应式布局

主题全面支持响应式设计,确保在桌面电脑、平板或是智能手机上,都能呈现出一致而优雅的浏览体验。在移动设备上,导航菜单将自动收敛为汉堡菜单,以维持界面的整洁与空间的通透感。

3. 自定义侧边栏

桌面端采用了固定侧边栏设计,其背景颜色支持用户自定义,默认为沉静的深色(#121212)。侧边栏整合了网站标题、描述及导航菜单,功能清晰,简明实用。

4. 社交媒体集成

主题内置了社交媒体链接功能,支持Twitter、Facebook和GitHub等常用平台,为博主与读者之间建立更广泛的连接提供了便利。

5. 优雅的文章展示

文章页面的设计简洁而大方,标题醒目,正文排版清晰易读。页面支持特色图片的展示,能够有效提升文章的视觉吸引力。同时,文章的分类、发布时间等元信息也以直观的方式呈现。

技术特点

1. 轻量化设计

主题整体代码结构清晰,无冗余功能和复杂的外部依赖,确保了页面的快速加载,对服务器资源消耗极低。

2. 标准化HTML5/CSS3

主题基于最新的HTML5与CSS3标准进行构建,保证了良好的浏览器兼容性与未来的可扩展性。

3. 自定义字段支持

为方便博主更灵活地控制文章的展示形态,主题支持多种自定义字段,例如文章缩略图(thumbnail)与文章摘要(excerpt)等。

下载地址

详见下载地址(下载地址1下载地址2)内的主题文档。

适用场景

SimpleBlog主题尤其适合以下类型的博客:

  1. 个人日志:记录生活点滴、心情随笔的个人空间。
  2. 技术博客:分享编程知识、技术教程的专业园地。
  3. 文字创作:专注于小说、散文等以文字为核心的创作平台。
  4. 极简主义者:追求简约设计与内容至上理念的博客作者。

总结

SimpleBlog主题秉承“简约而不简陋”的设计理念,为Typecho用户提供了一个专注于内容、设计精美且易于使用的博客主题。它没有华丽的动画与繁复的设置,但在每一处简约的背后,都体现了对用户体验和内容呈现的深思熟虑。

如果您是一位注重内容质量,希望读者能够专注于您的文字,而非被纷繁的设计元素分散注意力的创作者,SimpleBlog或许会是一个理想的选择。


主题改造详情

为了让这款源于WordPress的主题能在Typecho上呈现出理想的状态,我进行了一系列细致的调整。

删减的功能

1.统一日期格式:移除了原主题中 j M / M j 等多种英文日期格式切换选项,统一为更符合中文阅读习惯的 n月j日 格式。

2.移除“相关文章”模块:原主题的相关文章功能对缩略图有硬性要求,若文章缺少缩略图,会影响布局的美观。相比之下,一些付费主题(如Typology)在此处的处理更为灵活优雅。

原主题的相关文章样式

3.取消首页标题显示:据观察,启用此功能的用户不多。我曾在自己的博客上短暂保留此设计,以审视其视觉效果,但最终还是决定取消,直至更换新主题。(请见图片中用横线标注的位置)

横线标注的是首页标题显示效果

4.简化移动端搜索交互:原主题在移动端使用了Ajax即时搜索,但其体验并不完善——仅能搜索标题,无法覆盖内容。考虑到Typecho需自行适配Ajax,我将其简化为更传统、更高效的“输入+回车”搜索模式。

优化的功能

  1. 社交链接后台化:由于Typecho缺乏原生的菜单系统,我将社交链接的设置移至后台。预设了GitHub、Twitter和Facebook三个输入框,通过Font Awesome字体库渲染图标。若留空,则侧边栏仅显示搜索按钮。
  2. 中文字体适配:对主题的字体族和字号进行了微调,使其在中文环境下显示更为和谐、易读。
  3. 提升视觉统一性:新增了一项功能,即用户在后台设定的主题色,现在会自动同步应用于评论按钮、超链接以及文本选中时的背景色,从而增强了整体视觉的一致性。
  4. 调整分割线样式:将首页及归档页文章标题间的分割线由实线改为虚线,个人认为这样更加美观,从而将焦点聚焦在内容上。
  5. 文章置顶:配合我修改的文章置顶插件,可利用主题内置样式显示置顶文章。

移植主题合法吗?

Of course!

原主题基于GPL 2.0许可证发布,该许可证赋予了用户自由使用、修改和分发软件的权利。

同时,我也需要履行GPL的相应义务:我修改后的版本同样须在GPL 2.0许可证下发布,并且必须保留原作者的版权声明。

为了审慎起见,我特意致信原作者,并在两天后收到了他的积极回复:

Sure, go right ahead! All of my themes are released under the GPL license, which means you can port them as long as you also release the port under that license.

——Anders Norén

如果您决定使用这款主题,也请务必遵守GPL 2.0许可证的相关条款

如您喜欢这款主题,我会倍感欣慰。

一款简洁、美观的 WordPress 友情链接插件

2025年8月5日 10:38

近日,我开发了一款全新 WordPress 友情链接插件。该插件简洁、美观、易于使用。

可以访问以下链接查看实际展示效果:友情链接展示页

插件特性

  • 响应式布局:在桌面端默认每行展示 3 个链接,并能根据屏幕尺寸自动调整,在平板和手机上也能完美呈现。
  • 信息展示丰富:每个链接均会展示对方网站的 Favicon(头像)和博客名称,一目了然。
  • 灵活的排序方式:支持固定排序和随机排序两种模式。设置为随机排序后,每次刷新页面都会带来全新的链接顺序。
  • 智能头像获取:自动通过 favicon.im 服务抓取网站头像。同时支持手动指定头像链接,或在留空时显示默认头像。
  • 简洁的管理后台:后台管理界面操作直观,美观大方。
  • 纯净无残留:启用时自动创建专属数据表,禁用时彻底删除,不在数据库留下任何冗余数据。
  • 数据轻松迁移:内置导入/导出功能,方便备份和恢复友链数据。

使用方法

1. 下载与安装

可从以下链接下载该插件:点此下载

下载 .zip 压缩包后,在 WordPress 后台的“插件”—>“安装插件”页面上传并启用。

2. 插入短代码 (Shortcode)

在任意页面或文章中插入短代码即可展示友情链接。

如何在编辑器中插入?

  • Gutenberg (区块编辑器):添加“自定义 HTML”区块,将短代码粘贴进去即可。
  • Classic Editor (经典编辑器):直接在文本编辑模式下粘贴短代码。

未来计划

计划将此插件移植到 Typecho 平台。

致谢

在插件的开发过程中,AI 提供了巨大帮助,特此感谢科技的力量。

经过两天的密集调试,目前插件运行稳定,暂未发现明显 Bug。欢迎提出宝贵的意见和建议,或是一同参与改进,让它在保持简洁、美观、易于使用的同时可以变得更好。

制作了款 wordpress 主题 Cooooo

作者 夜枫's
2025年5月24日 23:42

上一个博客主题《Memorable-lit》,缝缝补补也将就用了六七年,况且,博客也是将近一年多没有更新,好多篇博文静静地躺在了草稿箱里……

这次呢,想着借机写一款主题,形式依然是我喜欢单栏。由于很久不写代码,看到代码很生疏了,外加当前前端技术迭代太快了,好多HTML、css3的新特性和js的ES5、ES6,我处于完全看不懂的状态,这个主题的由来是我平时浏览网站的时候,看到别人好看的风格样式,就扒拉扒拉下来了,有的懒得动脑子,就直接参考和借鉴过来。整个主题是使用字节推出的 Trae CN 编辑器,本地电脑搭建环境,外加用上Trae 的 Ai 来写代码,效率是离谱的高,在这个主题绝大部分代码是使用 Ai 的写的。开发效率是有点高,尤其是在解决一些很复杂的逻辑时,你只需告诉 Ai 程序的基本逻辑,它便生成可用的代码,在前端库的选择, 当然我选择的是 jQuery,其实前端JS可以用原生来实现,但是用着jQuery很顺手,代码简单,一行代码就能搞定的,没必要绕弯。别人都在用高级的Hexo、Hugo 等高级,而我依然选择的是 wordpress,可能懒得折腾、懒得写作时用Markdown,也可能是保持了习惯和旧状态,新特性对我没有吸引力吧。

年初一段时间博客感觉被黑了,博客的插件里出现了一些奇奇怪怪的代码,感觉是木马后门之类的代码,之前博客的版本为4.8,也是年久失修的状态,可能存在能利用的漏洞,导致的博客沦陷,当前,wordpress 最新的版本为 6.8.1,借机新主题就在最新的版本上测试开发,前前后后感觉写了近两个月,部分代码也是参考了大佬们的代码,修修补补,也算是正常跑了起来。

当前博客跑在Nginx + Mysql + php 8.1 下,对于 2 核2G 的云主机来说够用,甚至剩余的算力可以跑跑 docker 里的小应用,整体相对比较顺畅。

这次换主题也顺便修修花、剪剪草和施施肥,对于改造博客我也是下了很大的决心,好在一点点雏形出现到基本能用的状态,也是可喜可贺。当然主题若有问题,欢迎评论区提出,当然这个主题足够完善并且很有必要的话,可能也会开源哦。

博客我加个视频播放器、音乐播放器和全景播放器,想着给博友们分享一些我外出拍摄的一些照片和内容吧。

WordPress的文章别名是中文英文拼音,怎么改为文章ID

作者 老灵
2025年5月23日 11:34

WordPress的文章别名是中文英文拼音,怎么改为文章ID

很多人在搭建WordPress的时候,文章固定结构包含了%postname%,而不是%post_id%,后面想改又怕麻烦。其实做好规范,改动也没什么影响的。

在 WordPress 中,如果你想将文章的别名(slug/permalink)从中文改为数字 ID,可以通过以下几种方式实现。

下面是具体操作方法:

✅ 方法一:修改固定链接结构(推荐)

登录 WordPress 后台。

  1. 进入菜单:设置 > 固定链接(Settings > Permalinks)。
  2. 选择自定义结构(Custom Structure)。
  3. 输入以下内容:/archives/%post_id%/
  4. 或简单地使用:/%post_id%/
  5. 保存更改。

这样你的网站文章链接就会变成:https://example.com/123/

♻️方法二:批量修改已有文章的别名(slug)

上述方法修改的是新生成的链接结构,但如果你之前的文章已经使用了中文别名,在固定链接中可能依然显示中文。可以通过插件或代码批量将旧文章的 slug 改为数字 ID。

?方法一:使用 SQL 批量替换(建议备份)

你可以进入数据库(通过 phpMyAdmin 或类似工具),执行如下 SQL 语句:

UPDATE wp_posts SET post_name = ID WHERE post_type = ‘post’ AND post_status = ‘publish’;

注意:wp_posts 表名中的 wp_ 前缀需根据你实际的表前缀调整。

?方法二:手动更改为 ID(适合文章较少)

查看该文章的 ID(可以在浏览器地址栏中看到,比如 post=123)。

在「别名」字段中,将现有内容手动改为这个数字,如:123,点击 更新 即可。

?方法三:通过函数自动设置 slug 为 ID(适合文章较多)

你可以将以下代码添加到你主题的 functions.php 文件中(或使用 Code Snippets 插件添加),自动在文章发布时将别名设置为文章 ID:

https://github.com/lingchenzi/blog/blob/main/wordpress/change_post_slug_to_id


//修改文章别名为文章id
function change_post_slug_to_id($post_id) {
$post = get_post($post_id);
if ($post->post_type == 'post' && $post->post_status == 'publish') {
$new_slug = $post_id;
remove_action('save_post', 'change_post_slug_to_id'); // 避免死循环
wp_update_post(array(
'ID' => $post_id,
'post_name' => $new_slug,
));
add_action('save_post', 'change_post_slug_to_id');
}
}
add_action('save_post', 'change_post_slug_to_id');

? 注意事项

  • 如果你的网站已经上线,改动固定链接可能会影响 SEO 和已有链接。建议设置 301 重定向

  • 可以使用插件如 Redirection 来管理旧链接的跳转。

WordPress网站地图在Google Search Console中没有显示具体数据

作者 老灵
2025年4月15日 10:41

最近我将一个WordPress网站的网站地图提交给了Google Search Console,但是过了一周后,发现 Google Search Console 中没有显示具体数据。搜了下Microsoft Copilot,可能有几个原因导致这个问题。

WordPress网站地图在Google Search Console中没有显示具体数据

Google Search Console 中没有显示网站地图的具体数据,以下是一些可能的解决方案:

  1. 检查网站地图的提交状态
    • 确保你已经正确提交了 文件,并且 Google Search Console 没有返回错误信息。
    • 你可以在 “站点地图” 部分查看提交状态。
  2. 确认网站地图的格式是否正确
    • 网站地图应该符合 XML 规范,并且可以通过浏览器访问,例如 https://yourdomain.com/sitemap.xml
    • 你可以使用 Google 的站点地图测试工具 来检查是否有格式错误。
  3. 检查 文件
    • 确保你的 robots.txt 文件没有阻止 Google 抓取网站地图。
    • 你可以在 https://yourdomain.com/robots.txt 访问并检查是否有类似 Disallow: /sitemap.xml 的规则。
  4. 查看 Googlebot 是否能访问你的网站
    • 你可以使用 网址检查工具 来测试 Google 是否能够抓取你的网站地图。
    • 如果返回 404 错误无法访问,可能是服务器配置问题。
  5. 等待 Google 处理
    • Google 可能需要一些时间来处理你的网站地图,尤其是如果你的站点是新站点或内容更新频繁。
    • 你可以尝试 重新提交 网站地图,并等待几天查看是否有数据更新。

梯子机场推荐:最低年付99元,100G流量/月

如何在本地调试WordPress时忽略对wordpress.org的网络连接请求

作者 大致
2025年3月13日 10:43

本地调试WordPress时,为了保证代码的正确性,插件和主题作者往往会打开wp-config.php里的WP_DEBUG开关。如果您不知道这个开关,就不要往下看了。

define('WP_DEBUG', true);

这样PHP运行时的错误和警告就会以醒目的字体直接打印到网页上。
20250313_WP_local_debug_warning

但是这样会带来一个程序员的日经问题:是我的BUG我改,不是我的BUG莫挨老子!
按说WP这种成熟的产品是不会让用户看到警告和错误的。但是,由于众所周知的原因,WP内核、主题和插件升级所需要的WordPress的官网wordpress.org时灵时不灵,连不上的时候就会显示大面积的警告信息。
安装完成以后,后台这种需要连接到wordpress.org的地方大抵有4种:core update、theme update、 plugin update和translation api,出现在后台Dashboard、 Plugin、 Theme、 和Settings页面。其中Dashboard会调用前三种Update,Settings四种都会调用。
这些信息不仅是影响对于出错代码的判断(比如图中提示的“Cannot modify header information”,其实根本就不是本地header的问题),还会直接影响页面元素的渲染和操作。
那就必须要干掉它!

再次更新,

define('WP_HTTP_BLOCK_EXTERNAL', true);

这个宏屁用没用,还是得用我下面的方法。

开整。

//下面的action钩子调用的早,所以在加载主题或插件的时候就要直接remove掉,否则没机会了。
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
    remove_action('admin_init', '_maybe_update_core');
    remove_action('admin_init', '_maybe_update_plugins');
    remove_action('admin_init', '_maybe_update_themes');
    remove_action('init', 'wp_schedule_update_checks');

    //translations_api默认会返回false,之后会访问wordpress.org,返回空数组之后就不访问了。
    //Since 4.0.0
    add_filter('translations_api', '__return_empty_array');
}

//调试者作为admin,默认是有各种update权限的。这里令各种内部调用user_has_cap询问4种权限的结果强行置为false。
function _debug_ignore_wp_request ($allcaps, $caps, $args){
    $server_caps = array('install_languages', 'update_themes', 'update_plugins', 'update_core', 'install_themes', 'install_plugins');
    foreach ($caps as $cap) {
        if ( in_array($cap, $server_caps)) {
            $allcaps[$cap] = false;
        }
    }
    return $allcaps;
}

function my_admin_init {
    if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
        //下面的钩子很多不能移除得太早。
        //宁杀错不放过。
        remove_action('upgrader_process_complete', 'wp_update_plugins');
        remove_action('upgrader_process_complete', 'wp_update_themes');
        remove_action('load-plugins.php', 'wp_plugin_update_rows', 20);
        remove_action('load-themes.php', 'wp_theme_update_rows', 20);
        remove_action('load-plugins.php', 'wp_update_plugins');
        remove_action('load-themes.php', 'wp_update_themes');
        wp_unschedule_hook('wp_version_check');
        wp_unschedule_hook('wp_update_plugins');
        wp_unschedule_hook('wp_update_themes');

        remove_action('wp_version_check', 'wp_version_check');
        remove_action('load-plugins.php', 'wp_update_plugins');
        remove_action('load-update.php', 'wp_update_plugins');
        remove_action('load-update-core.php', 'wp_update_plugins');
        remove_action('wp_update_plugins', 'wp_update_plugins');
        remove_action('load-themes.php', 'wp_update_themes');
        remove_action('load-update.php', 'wp_update_themes');
        remove_action('load-update-core.php', 'wp_update_themes');
        remove_action('wp_update_themes', 'wp_update_themes');
        remove_action('update_option_WPLANG', 'wp_clean_update_cache', 10, 0);
        remove_action('wp_maybe_auto_update', 'wp_maybe_auto_update');
        add_filter('user_has_cap', '_debug_ignore_wp_request', 10, 3);
    }
}

add_action('admin_init','my_admin_init');

完事。这个世界清净了。


  • (1):农历每年冬至所在的月固定为十一月。如果两个冬至间有13次朔望,则该年产生闰月。13个月中,第一个没有二十四节气里的偶数节气的月份就是闰月。因为十一月是起调点,所以农历十二月和正月是不会出现闰月的,正月初一和第一个节气春分受的影响也很小。我数学不好,但查表得到的结果,从1950年到2069的120年间,闰年就是双春,双春就是闰年,一一对应,无一例外。闰月是典型的用太阳历调整月历的规则,所以农历是阴阳历而不是纯阴(月)历。

WordPress文章/页面外链自动添加nofollow【代码/插件】

作者 老灵
2025年3月3日 20:48

在 WordPress 的文章和页面中为外链自动添加 nofollow 属性是一个常见的 SEO 优化方法,可以防止将链接权重传递给外部网站。我们可以手动在主题的 functions.php 文件中添加相关代码来实现自动添加 nofollow,也可以使用插件。

一、主题文件添加代码


//文章与页面外链自动添加nofollow
function add_nofollow_to_external_links($content) {
$regexp = '/<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>/i';
preg_match_all($regexp, $content, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
if (!strstr($match[2], home_url())) {
$content = str_replace($match[0], str_replace('<a ', '
}
}
return $content;
}
add_filter('the_content', 'add_nofollow_to_external_links');

Github代码:https://github.com/lingchenzi/blog/blob/main/wordpress/wordpress-nofollow

二、使用插件

1、Nofollow for External Link是一个更简单、专注于添加 nofollow 的插件;

2、WP External Links 是一个功能强大且广受欢迎的插件,不仅能为外链添加 nofollow,还提供额外的功能,例如让外链在新标签页中打开。

梯子机场推荐:最低年付99元,100G流量/月

博客升级为 WordPress 6.7

作者 吴杰
2024年11月13日 16:14

WordPress 大版本 6.7 今天发布了,随之而来的是 2025 主题,我已经升级了,并且换上了最新的主题,正如你所看到的一样。

原来我是一直嫌弃块主题的,今天摸索了下,不知道是6.7的块主题变好了还是我会用了,总之就是真香。

全站编辑真的很方便。最明显的体会就是页脚悬挂备案编号。之前我是通过建立子主题,然后在子主题里修改footer.php文件来实现的,为了挂一个备案编号而专门建立一个子主题,有点高射炮打蚊子的感觉。现在好了,直接编辑网站,修改页脚文字就可以实现了,真的很方便!

前段时间以来,一直在反思自己,随着年龄的增长,会有一点守旧,其实应该更开放一点,多拥抱新事物,才不至于被时代落下。

虽然古腾堡和全站编辑在互联网上风评不好,很多人觉得不好用,但我觉得还好,拖拖点点就能实现一些想法。方便用户使用,总是好的,最起码方向应该是没有错。至于为什么有那么多人喷,我想大概是幸存者偏差,用的好的人不会专门发个帖子赞扬它,只有觉得不好用的人才会去发帖抱怨,所以造成了看到的都是抱怨贴。

现在 WordPress 全力 all in 古腾堡,我相信未来会变得越来越好用,越来越成熟。

又到续费时

作者 大灰
2024年11月11日 13:00
话说我使用搬瓦工是从2017年开始,中间也买过其他家的机器,灰常记忆一直从未挪窝稳稳的运行,虽然慢却可以打开…… 今天看了下这台vps,硬盘空间又不足10GB了,感觉也没搞什么东西在上面😂,现在看来vps最低配置2H3G-50GB+空间才适合我。 今天把Nginx换到了Nginx openresty,其实也没感觉出来有多快,有些东西不兼容又换回nginx。有好的东西就想尝试下,又不是太折腾。 又到了一年VPS续费的时节,目前手里一台香港、一台美国瓦工、两台美国大硬盘机器。 买了两台大盘鸡,用来做备份。现在使用wp后台总是会报错,挺无解的尽管玩了这么多年wordpress还是找不出问题所在,只能 […]
❌