普通视图

发现新文章,点击刷新页面。
昨天以前首页

浏览器新标签页书签插件

作者 LMS
2025年3月8日 08:55

newtabBookmarks

不想让 360 霸占浏览器首页,于是很久以前参考木木同学的导航页,自己用 php 写了一个页面,挂在了 dh.muxer.cn 页面下,然后设置为了自己浏览器的首页。因为不怎么更新,当时做完后添加了多少链接,现在还是多少链接,再加上办公室浏览器和家里浏览器首页链接不一样,用的是 127.0.0.1,所以其实没怎么用。

既然都是单机玩,又不想给 dh.muxer.cn 搞个用户系统区分不同使用环境不同链接,就想着要不搞个插件吧。

deepseek 刚火起来的时候,我就问了它弄这样的插件难不难,没想到刷刷刷的就给我丢出来了一大堆代码,一测试还真能用,就直接折腾上了。

其实真搞起来的时候,deepseek 用的很少,主要那段时间问超过 3 句,就来个“服务器繁忙,请稍后再试”,搞不下去。后面大部分时候用的都是 vscode 的通义灵码插件。最终取名 浏览器新建页面自定义网页书签导航插件/newtabBookmarks,结果如下:

newtabBookmarks
newtabBookmarks

主要功能

  1. 自定义链接分类
  2. 支持手动添加网站信息
  3. 支持网站页面点击插件图标自动获取网站信息,需要自己添加分类
  4. 编辑模式支持拖拽分类重新排序
  5. 编辑模式支持拖拽书签链接重新排序
  6. 编辑模式支持编辑、删除已有书签链接
  7. 编辑模式支持导入和导出书签导航 JSON 数据
  8. 支持设置自定义页面标题、背景颜色、背景图片
  9. 支持设置 bing 每日一图为背景图片
  10. 支持设置本地图片为背景图片
  11. 支持设置背景颜色透明度
  12. 支持搜索已添加的书签链接
  13. 默认 bing 搜索引擎
  14. 显示每日诗词诗句

使用方法

  1. 下载项目到本地并解压得到 newTabBookmarks 文件夹
  2. 打开 chrome 浏览器,进入扩展程序页面(chrome://extensions/)
  3. 打开开发者模式
  4. 点击“加载已解压的扩展程序”,选择 newTabBookmarks 文件夹
  5. 点击插件“详情”,选择“固定到工具栏”
  6. 浏览器点击选择“设置”-“起始页面”-“打开新标签页”
  7. 打开浏览器或新建新标签页,即可看到自定义的网页导航书签

注意事项

  1. 本插件支持 chrome、edge、360 浏览器
  2. 本插件需要浏览器数据存储和读取页面信息权限
  3. 清空浏览器数据可能会导致书签数据清空,请及时导出备份
  4. 删除插件会清空书签数据。

Github 仓库地址

https://github.com/happyet/newTabBookmarks

如何在本地调试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');
    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插件:好物

作者 从良未遂
2025年1月3日 18:28

对于技术流来说,实现这个功能太简单了。记得是五木老师先折腾,后来叶子笔记跟进,技术小白看的直流口水。

前几天在新加坡联合早报上看到这样一则新闻《小米创始人雷军千万年薪聘请95后AI天才女子》,我第一次知道了DeepSeek这个公司以及其研发的AI大模型。文章对DeepSeek的评价很高。抱着试试看的态度,我开始用DeepSeek写好物插件。过程很简单:我说思路,DeepSeek写代码,过程出奇的顺利。今天我按照自己博客的主题和DeepSeek一起完善了css代码,算是写好了。

后台看截图:

前台看演示:好物

需要的同学自行下载

使用方法:

1、上传启用;

2、新建页面,在页面里输入短代码:[haow_display_items count="9"](haow应该是haowu);

3、后台添加好物信息。

PS:后续肯定会订阅更多勃友的rss,因此,最好能利用订阅RSS实时展示博友最新文章时在朋友圈显示所有最新博文。因此,需要分页展示所有缓存到output.json里的新文章,跟DeepSeek交流了很久,分页是实现了,但是无论点击第几页都只显示第一页的新文章,目前无解。

有了DeepSeek,以后不少问题可以不麻烦技术流勃友了。

博客略微升级到 WordPress 5.3.18

作者 石樱灯笼
2024年12月29日 23:53

如题。

主要是因为最近想写点和代码相关的内容,但是目前在用的代码高亮插件已经嗝屁太久,而且这破插件有乱改代码的大毛病。我也是嫌弃这插件好久了。

奈何看了下目前的插件,或者是要更新到很新的版本,或者要对 <pre><code>example code</code></pre> 这种标准 HTML 写法进行大改。这互联网怎么还越发展越刁钻越发展越死板越发展越玩寡头垄断呢。

没办法检查了几个博友的实现,结果发现有些高端用法过于高端,至少我也得在本地调试一下才敢在线上部署。

但是5.2版本我拉到本地开调试模式就狂报错,的确这破版本是不支持PHP7.4的。而我目前也没精力把 WordPress 往 6 版本上升级,以及 PHP8 同理。

目前就先往上拉一个等级再说。

 

各位朋友如果发现博客有 Bug 可以直接评论。

The post 博客略微升级到 WordPress 5.3.18 first appeared on 石樱灯笼博客.

blog搬家

作者 xrspook
2024年11月28日 08:13

当年今日

11月末有好几件事让人焦虑。除了单位的工作以外,还有我自己的blog。因为我们合租的服务器到期了,11月28日到期。据说我们已经连续在那个服务器供应商那里好多年,我感觉有10年以上。那这一次我们觉得真的要离开了,因为那个供应商在我们提交了工单以后,半天都不回复,其次就服务器的性能来说,其实那家不算太好,虽然访问速度我个人觉得在广东电信之下还是可以的。服务器也比较稳定,试过宕机,但是几率不高。一直以来我都觉得在WordPress的后台没法用,自带的导出功理论能把全站的内容导出,我们可能是那个空间的设定的问题,每次当我下载不到2MB的时候就会停掉,结果打开那个xml文件实际上是不完整的,所以我根本没办法做全站的导出,我只能手动地分段导出文章,但那样的话,我就会丢失其它所有内容。

今年3月开始,包租公就告诉我要备份了。因为他忘记了服务器的密码。所以经典的那个WordPress搬家方式不可行,我得用其它方式把WordPress的东西全部备份出来,那个时候我觉得这根本是不可能完成的任务,但后来的确有牛逼的插件能做这个。一开始包租公告诉我,是10月到期,于是10月的时候我就找他,10月底的时候我继续找他,然后他告诉我11月到期,我不确定11月什么时候到期,有一天突然服务器宕机了,我以为是我们到期了,虽然前一天我已经做好备份,但是突然打不开,让人忐忑,结果被告知,我们还没到期,我们到期的日期是11月28日,所以11月25日的时候,我又找包租公。他居然把那个给忘记了,但是他很快就买了新的空间,然后开始往里面装东西。我们的速度很快,在11月26日我们就已经完成了搬家,虽然有一些奇怪的东西还是好像没有完全解决,但总的来说,基本上所有东西,能一次性挪走的都已经挪走了,至于哪些东西出了问题,我还没办法逐一检查出来,检查不出来的只能发现一个解决一个。其中一个比较明显的问题是有些页面有140多条评论,但实际上前台只显示了两条,当我在后台查询的时候,我的确能看到140多条,所以为什么会出现这种情况呢?其它文章评论看上去是正常的,我没有仔细的数过,但起码你能看到评论有很多,至于是不是显示多少条的那个数量,我没有仔细研究过,但为什么一些页面的评论展示数量是正常的,而另外一些却不行呢?这件事情很诡异。我记得当我用插件完成搬家的时候,除了完成按钮以外还有两个链接一个是永久链接的设置,另外一个是评论插件。在我印象之中,我没有使用任何评论插件。永久链接在那个,搬家插件之前那个版本,永久链接会神经病,得手动重选,但在这个新的插件里搬家完毕后,好像永久链接依然会以我自定义的形式显示,没有出现问题,但我还是按照以前的步骤走了一遍。

搬家的时候,我用的是IP地址,但搬家完毕以后,我把IP地址绑定到了我的域名,后来我又发现媒体文件那里当我从某个前台地址打开图片,图片显示的不是域名地址,显示的是IP地址。这算是一个很傻瓜的问题,肯定可以通过一波替换全部处理掉。域名也好,IP地址也好,实际上都能指向那个图片,万一我换了一个网址呢?那个图片就会变成失效。这种东西可以通过在后台数据库做替换简单解决,但这也是搬家过程之中经常会发生的事情。哪怕不是搬家,是从http变成https也会有这种毛病,所以为什么我就没有一种快捷的方式替换掉所有这些东西呢?

但总算搬家这个事情解决了,而且好长一段时间,我都不需要在这个问题上操心。

尝试升级 WordPress 版本 和 PHP 版本,然后失败了

作者 石樱灯笼
2024年10月25日 23:36

尝试把 WordPress 从 5.2 版本 升级到 6.6 版本,把 PHP 从 7.4 版本升级到 8.3 版本。

任务艰巨得完成不了。

非常的崩溃。


前提

我现在的线上的博客,以及线下的开发环境,以及(如果还在不为我知的某个角落存在的话)商用用环境,都是 PHP 7.4 的。

最早些时候,应该算是2015年,正式入坑 PHP ,那时候基本是公司用啥,我用啥。PHP 5.2 5.4 5.6 都用过了,尤其是 5.2 大坑一大堆,摔过很多次。然后到 2016 年的时候终于用上了革新的版本 PHP 7.0。真爽。再后来开始自己独立开发环境,直接开了 DAMP 的坑,最初也是用的 7.0 版本,然后就很随意的升到 7.3 版本,主要是当时开发负担少。然后博客站也都升级到了 PHP 7.3。

再后来 2021 年接了一个外包项目。虽然当时 PHP 8.0 已经发布了,但是貌似周边支持都不怎么地。为了保证开发速度,直接用了 PHP 7.4 版本。当时还涉及到前端开发,Node环境也是大更新,很早之前一直用的各种热门前端库基本都死绝了。博客和本地开发环境也都升级到了 PHP 7.4,博客的 WordPress 程序倒是没变,还是 5.2 版本(这里埋了个大坑),只是偶尔会从官网下载代码包然后手动更新对应的文件,以修复些潜在的安全问题。

现在是2024年年末,就连PHP 8.0 都已经停止维护快满一年了,最新版本 PHP 8.3 也已经发布快满一年了。WordPress 都到了 6.6 版本了,一堆 WordPress 插件都已经停止 5.2 版本的支持了。

想趁着有时间有机会,把 PHP 和 WordPress 都升级了。

天真了。


第一天

首先是把线上的代码全备份一遍。这个毫无工作量,我之前写了个备份代码,直接就把自己的整站扒下来。然后把备份的站再部署到本地的开发环境上,再改几个数据库字段,就完事了。打开后台,先禁用所有插件,以便升级之需。

Apache2 和 MySQL 不用动,因为用的一直都是 Docker 的最新版本,这几年也没什么巨大的兼容性变化。

PHP 这块我不知道算不算麻烦。我把 PHP 从 7.4 到 8.3 的所有 不向后兼容变更废弃功能 全都看了一遍。没多少,就几页,几分钟就看完了。个人感觉这么多变更,只有一条能实际影响到我日常开发工作,就是自 8.0 起不再支持 带有默认值的参数后面跟着一个必要的参数

screenshot_on_b85m_by_flameshot_at_2024-10-24_22-51-45.png

其实个人工作中也很少这么用,因为易读性有点烂。论性能来讲的话这么写性能也很差,只不过以前工作过的公司里就有很多人这么写,主要是为了防止其他同事调用函数忘记传参(空参也是参)。

其余的改动基本影响不到我。我使用的基本都是 PHP 的官方建议用法,最多也就是会遇到某些外部库被遗弃然后有个平替的情况,比如数据库接口啥的,即使出错了立刻就能发现。

于是很自信的先把 PHP 环境升级到了 8.3 。因为是基于 Docker 的所以也完全不用担心环境污染的问题。

然后就崩了,WordPress 就打不开了。

这倒是意料之中,毕竟当年 WordPress 4.3 版本当年连 PHP 7.0 都不支持。我现在用的是 5.2 版本,最高能支持的 PHP 版本也才 7.3 ……

Screenshot_2024-10-24_at_23-02-46.png

什么?7.3?但我已经用 PHP 7.4 跑了 WordPress 满 3 年了啊???

什么兼容性测试……

下载了个 wordpress-6.6.2 的包,按官方文档手动安装。 崩得一塌糊涂

全部删除了重新来,这回用官方的自动升级功能,直接从 5.2 升级 6.6。真神奇,WordPress 官网被墙了这么久了竟然能秒下 WordPress 的安装包,我也不知道他是走的什么渠道。PHP 就这点恶心,前台所有操作你都看不到任何细节,就像是在用 Windows 一样。

成功安装。然后 崩得一塌糊涂 。这回不仅崩得稀烂,而且由于没手工删除后台的旧文件,新旧文件混在一起,更是手足无措。

就这么搞了超过6个小时,一直干到后半夜三点多,搞不定。

放弃,睡觉。

然后严重失眠,抽搐。

screen_IMG_2148.png


第二天 白天

首先考虑下到底是 PHP 的问题还是 WordPress 的问题。

按理来讲我已经把 PHP 的升级文档都看完了,并没有什么会天塌一般的变更,但是 WordPress 这边的确天塌了。

先在 PHP 8.3 环境下运行一下我的其他项目看看,结果我的个人主页就崩了。

screenshot_on_b85m_by_flameshot_at_2024-10-24_23-33-27.png

我用的是 2023 年 3.1.48 版本 的 Smarty,其基础版本是给 PHP 7.0 做的,可能旧了吧。

下载了最新版本的 smarty-5.4.1 ,然后

screenshot_on_b85m_by_flameshot_at_2024-10-24_15-36-49.png

什么玩意? implode is Deprecated ,我怎么不知道?

又去重新看了一遍 PHP.net 官网的 implode 文档和 PHP 升级文档。根本没有 Deprecated 。

然后在网上搜了一下,发现是 Smarty 的锅。而且 Smarty 还在 join 和 implode 之间反复横跳。更恶心的是,implode 和 join 在 PHP 7.4/8.0 中已经声明并废弃了 先数组后分隔符 的用法,但是在 Smarty 中却是强制要求 先数组后分隔符 ?甚至官方在 issue 里来来了句 Smarty is Smarty and PHP is PHP. 有病吧。而且你就算有病,你特么连个文档都没有,谁知道你有这种抽风的设计啊。

你要知道之所以我还用 Smarty 这种超级古董,就是因为这是一种 靠谱的、前后端分离、完全后端渲染、仅需要 HTTP 和 PHP 环境、不需要臃肿框架和特定语法,的网页渲染模式,是提供给搜索引擎最靠谱的传统模式。没有网页模板系统的话,想写这种纯后端渲染前端显示的页面,就只能 php 和 html 代码混写,非常的恶心。

现在 Smarty 抽风了,真就不知道以后还怎么不依赖框架写这种页面。我搜了下,Laravel 的 Blade ,和 Symfony 框架下的 Twig,貌似也可以独立使用,但是我对 Laravel 和 Symfony 基本一无所知,作为一个 PHP 开发者真是有点丢人。

话题扯远了,回到刚才。

我目前是不太想动我的个人主页的,这 WordPress 是大头,是主要内容。主页只是个入口。虽然主页改动起来并不困难,代码量少,Smarty 抽风的部分比较好找。但主页这一块我其实并不满意,主要是多语言这块用的传参而不是独立页面,很受搜索引擎嫌弃,基本上没收录,收录的也搜不到。但我的确没有精力和欲望去重做。

另一方面,WordPress这边,崩溃得最多的部分其实是插件。WordPress的代码质量本来就很堪忧了,第三方插件更是三脚猫,各种天花乱坠的不规范语法,可以说基本上都不能在 PHP 8.3 上运行。

另外我虽然看了 不向后兼容变更废弃功能 ,但是 PHP 新版新增的语法糖也有点天花乱坠。我用的是最新版的 php-cs-fixer_v3.64.0 ,没配置好的话就会把那些插件的奇葩写法转写成 8.3 的语法糖,有时结果更是瞎眼,基本没有易读性。

综上考虑,先放弃 PHP 8.3 的升级。先把能通的条通。PHP 的升级难度应该不是最高的,但是底下这些撇不掉的小垃圾目前是必须要保且支持不到 PHP 8.3,没精力做修改。

放弃 PHP 8.3 继续用 PHP 7.4 。


第二天 晚上

看兼容性列表,WordPress 6.6 也是支持 PHP 7.4 的。

但是实际上 API 改动实在太大了,而 PHP 前端应用最恶心的一点,就是 出错了,不报错

即使开启了 define('WP_DEBUG', true); define( 'WP_DEBUG_LOG', true ); define( 'SAVEQUERIES', true ); ,也经常是

  • 功能好像开了但是没开
  • 功能好像崩了但是啥日志都没有
  • 功能正常使用但是页面上打了一堆不知道哪里来的错误日志

面对如此大的一个工程而大部分代码逻辑都是不可靠的。升级到 6.6 实在是消受不起。

放弃 WordPress 6.6 ,只升级到比较近的版本。

要不然试试 5.5 吧,毕竟我在用的一款插件,作者自评最高支持到 5.5。

下了个 WordPress 5.5 的安装包,装完了。崩,但是崩得没有 6.6 多。

主题 graphene

不开插件,只看主题,首先就是文章的评论显示不出来。检查后发现是评论的API变了,而我的主题 graphene 是 1.9.4.3 版本的,不支持 5.5 。

screenshot_on_b85m_by_flameshot_at_2024-10-25_00-48-04.png

有时候看其他人的代码就是折磨,代码里写法五花八门,空格TAB混着,一会拼接字符串,一会替换字符串。单引号双引号混着用,左边括号有空格,右边括号换行了。

说实话我都不知道这算不算改好了,反正现在是能显示出来。我更担心的是其实还有哪个不知道的角落还有错,但是看不到,毕竟 PHP 前端 出错了 不报错

官方倒是有个新版的 graphene,但是我现在用的这个主题就是我大量改动过的,因为 graphene 原版的代码实在是, 太错了 。好多代码完全不符合前端的理念。然后是颜色和界面也是要一点一点从设置里调,那复杂和麻烦程度,说真的我更乐意重写 HTML 和 CSS 。

我真的想过很多次自己做一个 WordPress 主题,这个想法可是足够老了。但是当时 WordPress 3 版本的主题文档就恶心到我了,真的超级麻烦。而到如今就 WordPress 现在的代码质量,我估计开发主题会更困难更恶心。

也是怪不得其他更轻量的博客程序能后追直上。

插件 Disable WordPress Core Updates

接下来是 Disable WordPress Core Updates 这个插件。

这个插件是为了禁用 WordPress 的界面更新的。但是其实只有一行有意义的代码:

add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );

首先 create_function 这个函数在 PHP 7.2 废弃,在 8.0 中删除,所以我改写成了。

add_filter('pre_site_transient_update_core', function ($a) { return null; });

然后就见证奇迹了。能用是能用,但是 pre_site_transient_update_core 这个字段我在整个 WordPress 代码中都没找到。为什么做一个 pre_site_transient_update_core add_filter 就能抑制 WordPress 界面提示升级? 魔法啊?

然后开启这个插件的时候,更新页面是崩的。

screenshot_on_b85m_by_flameshot_at_2024-10-24_21-14-55.png

魔法。

插件 NIX Gravatar Cache

接下来是 NIX Gravatar Cache 插件。

这是个把 Gravatar 头像缓存到本地服务器的插件,只不过早就死透了。我当时随便改了点代码对付着用,大部分时间没出错也就那样了。

首先是这段代码。(红色部分是我添加的改动)

screenshot_on_b85m_by_flameshot_at_2024-10-25_01-04-29.png

不能直接执行 wp_enqueue_scriptwp_enqueue_style ,要先执行个 add_action('wp_enqueue_scripts', 引用能调用那俩玩意的函数); 。外国人看这种超长的单词时不会眼花吗?

然后是这么一段代码。

screenshot_on_b85m_by_flameshot_at_2024-10-25_01-00-47.png

WordPress 的 register_啥啥啥_hook(__FILE__, array($this, '函数名')); 写法全都作废了,要改成 register_啥啥啥_hook(__FILE__, array($this, '函数名'));

接下来底下那一节:

  • 假如 路径不可写 且 路径为目录,报错

否则

  • 假如 创建目录(权限777)失败 且 路径不为目录,报错

就这烂判断条件看得我脑子都快炸了也没弄明白为什么这破玩意能在我线上服务器上跑几年没报错,而我本地开发环境却根本跑不通。

screenshot_on_b85m_by_flameshot_at_2024-10-25_01-19-42.png

而且这玩意讨厌就讨厌在于,确在我的测试环境下报错了,但是 WordPress 只是多了个 .php-error 的样式并且高出来 2em 的一节,但是一点错误日志都没有!!! 出错了 不报错

最后还是靠自己写 debug 代码定位的问题。

这 TM 都是些不该是问题的问题,竟然多得到处都是。

2天,一点有效进展都没有。唯一有效收获就是这些屎山不碰就没事,一碰能崩得全身是屎。

反而自己写的没有引用那些垃圾玩意的插件和程序,没发现啥大毛病。


第三天

2天没啥进展,给我干懵了。

俗话说没事别升级,升级必出事。

原本的想法是先试着升级,如果不能平滑升级的话,大不了全摧毁了,然后把整个博客文章用导入的方法塞回去重建。如果插件出问题了,大不了找找看是否有新的替代品。结果搜了一下,靠谱的插件基本没有,一大堆商业推广的插件,和一大堆复合性插件,而且这些插件无论对 5.x 版本 还是 6.x 版本的兼容性都乱七八糟,问题解决不了,还有可能引入更多的问题。主题这边则是更不想换,一方面本身现在用的主题就是我大量修改过的,因为网上的各种主题,仅安全性就一塌糊涂,更别说 HTML 标准了。我这主题还是专门针对 1366×768 分辨率优化过的,能在 小屏幕 150% 比例正常显示。让我再去改个新的,工作量也是太大。

现在基本上没辙了。

PHP 这边其实还行,而且版本活跃度比较稳定。

screenshot_on_b85m_by_flameshot_at_2024-10-25_22-09-00.png

https://packagist.org/php-statistics 能看出各版本使用占比都跟维护相关。但 7.4 版本 比 8.0 版本还受欢迎 属实乐了。

但是周边应用真的是质量山体滑坡。WordPress自 3.0 版本就开始崩,后面很多发展都很魔幻,就连编辑器都是靠社区兜底,到现在已经想不清楚这玩意的产品路线是啥了。

其他生态我也不清楚,毕竟作为一个 PHP 开发,我连 Laravel 和 Symfony 都没用过,商用产品都是用 ThinkPHP 应付的,当然最爽不过不依赖框架没有条条框框自己从头写。

但是像 Smarty 这种原行业标志都走奇葩路线了。可以说整个IT行业,基本上,正常的元老人物都退出舞台了,剩下的这些,刨去臭鱼烂虾,就只有偏执而扭曲了,假若走向歪路,那就没得旧,而这一点在开源社区上也极为明显(因为闭源商业的死不死没人关心),Godot 基金会开搞政治正确炮轰特朗普和动画头像用户,Linux 基金会直接开踢俄罗斯的代码贡献者。IT 行业现在就像是一个患了早期癌症的癌细胞轻微扩散病人,看似有救但却是谁都不想救。


结论

给我干哑火了,懵逼了,现在不知道咋整了。

The post 尝试升级 WordPress 版本 和 PHP 版本,然后失败了 first appeared on 石樱灯笼博客.

您的邮箱被管理员屏蔽无法评论

作者 Mr.He
2024年10月1日 09:21

这几天突然被垃圾评论包围,于是寻找一个可以屏蔽垃圾评论的插件,通过一番搜索,终于找到了一款名为 SmartSpam 的插件,最新版本 2.7.0,声称“智能评论过滤器,让机器人彻底远离你!”,最后更新时间为 2021-03-08,装上去之后,果然没有了垃圾评论,感觉非常良好。

晚上继续调整博客细节,增加一点点没有什么卵用的小玩意。

  1. 图片exif添加一个判断,如果不存在,则显示该图无exif信息,感谢作者 @Lopwon 和 @1900 的帮助。(为了这个,去掉了图片懒加载,去掉了 Pjax,损失打开速度。)
  2. 在评论区加一个点赞按钮,搞一点互动,觉得挺新鲜的。
  3. 调整博客配色,绿配橙,很扎眼。
  4. 升级 php8 后,此主题 ShortCode 功能报错,从各个文件里面删除。

以上都是在登录的情况下进行的,很正常。尝试退出登录测试评论功能,却被提示您的邮箱被管理员屏蔽无法评论,小脑瓜子嗡嗡的,完蛋啦,赶紧禁用 SmartSpam 才正常。

所以,这两天光临敝博客的朋友,如果评论失败,并不是我屏蔽您的邮箱,是插件导致的,在此向各位道歉!

最后祝大家国庆快乐!

4F2C5C77441FD0F099C4E838D39B028E.png

Obsidian 和 WordPress 我都用什么插件

作者 Jeff
2024年9月3日 19:24

Obsidian 插件

1. Hover Editor
快速悬浮模式编辑。

2. Outliner
整理大纲。

3. Clearing Unused Images
用于清理图片,该插件默认不开启,需要清理时才启用。但现在基本不插入图片到笔记,纯文本记录。

以上就是我当前使用的所有第三方插件。之前也试过安装 Calendar、Kanban、Thino 等等插件,但感觉都没太大必要,软件自带功能和核心插件完全可以应付常规笔记需求。插件多了反而影响软件秒开。

我使用 Obsidian 插件的使用原则是,脱离 Obsidian 后,所有内容可以在其他编辑软件中继续正常使用。这意味着类似 Dataview 需要语法来判断、筛选内容的插件不符合我的要求。没有 Dataview 的便捷性,反而让我对于索引卡制作和双链的使用更加严格,对内容有更多的思考。提升效率的插件可以考虑安装一两个,或者多记几个快捷键。


WordPress 插件

1. Akismet
默认插件,能应付部分垃圾评论。

2. Autoptimize
优化 HTML、CSS、JS。

3. Object Cache
优化缓存。

4. WP Permalinks Migration
去年简化固定链接后作重定向安装的,计划明年删除。

以上就是我当前使用的所有插件,其他就是依赖部署服务器的时候一些优化,买的最低配轻量应用服务器。目前感觉网站整体速度还可以。我的开源主题,我会在functions.php 中禁用一些不需要的功能。我自己用的主题,我会禁用更多,比如禁止WordPress自动生成缩略图、禁止响应式图片。我不考虑使用第三方服务,比如图床,以避免以后服务终止或迁移带来的困扰。

-

个人觉得,做笔记也好,写博客也好,软件/程序功能上的需求没有那么多,就是图片和文本信息。基于极简原则,其他都是画蛇添足或锦上添花。花样多,需要投入的非必要时间就多,让你分心的东西越多。够用就好。

4个步骤让 MacOS 13 以下版本支持 AVIF 格式预览

作者 Jeff
2024年8月28日 10:36

如果你使用的是 macOS Ventura(MacOS 13),系统已默认支持 AVIF 格式打开和预览。对于更旧的系统版本,需要通过安装第三方图片浏览软件或拖到浏览器中查看。

AVIF QuickLook 插件可以通过4个简单的步骤,实现在系统直接预览 AVIF 格式,该插件由国内一个作者 DreamPiggy 开发。

要求:

1、macOS 10.11+ (Big Sur+) 以上版本
2、M1/Intel Mac 都支持

步骤:

1、在 Github Release Page 下载最新的 AVIFQuickLook.qlgenerator
2、打开 访达.app (Finder);
3、通过快捷键 Shift + Command + G 打开“前往文件夹”窗口,输入 ~/Library/QuickLook/ 然后回车。 macOS Catalina 以上版本, 使用 /Library/QuickLook/
4、把下载的 AVIFQuickLook.qlgenerator 复制到该文件夹内,可能需要输入电脑密码确认。

如果你已经安装了 Homebrew,只需要一行命令即可。

brew install avifquicklook

安装完,系统就支持直接预览 AVIF 格式了。

wxsync:采集微信公众号图文插件

作者 从良未遂
2024年4月20日 09:17

标准云微信公众号文章采集与自动同步插件wxsync,手动采集永久免费,自动同步采集可按月收费。下载和付费地址:http://std.cloud。

插件支持wordpress和zblog平台,支持公众号历史文章链接付费导出。

搞一个垃圾站,偶尔需要采集微信公众号文章,由于使用频率不高,所有没有选择使用付费的WPJAM GrabMP。实际使用下来,wxsync已经完全够用,能够去除微信公众号文章里的大量无用代码,还可以自动保存图片到本地。我找过很久,免费且实用的插件并不多,且用且珍惜。插件相关功能如图所示,不一一介绍,基本都很直观。

WP Post Heatmap 给 WordPress 博客添加热力图

作者 雪糕
2024年1月8日 14:37

简介

逛推的时候偶然看到椒盐豆豉的《如何给 Hugo 博客添加热力图》,正好有人需要 WordPress 版本,又正好我还从来没有做过一个 WordPress 插件,又恰好想「多多创造一些自己感兴趣的东西」,就想着试试手。没想到 WordPress 插件做起来出乎意料地简单,整个开发和适配过程大概花了 2 小时 30 分钟(来自 WakaTime 的统计数据)。技术上的细节,在椒盐豆豉的文章里已经非常详细了,想了解的朋友们可以直接去她的文章中看,或者直接查看源代码

在 Hugo 版本的基础上,WP Post Heatmap 使用 PHP 函数读取文章的日期,字数,标题,和链接;然后将其传给 JavaScript 文件渲染 echarts. 整个开发过程没有遇到太多困难,但的确遇到了字数统计不准确的问题:WordPress 默认的字数统计无法统计中文字符,所以我用了个迂回的方式来解决:

$word_count = mb_strlen(strip_tags(strip_shortcodes($post->post_content)), 'UTF8');

在 JavaScript 里,文章的字数单位是千字,保留两位小数:

const wordCount = (post.word_count / 1000).toFixed(2);// Word count of the post

安装和使用

当前版本:v0.01

项目地址:https://github.com/ann61c/wp-post-heatmap

下载地址:https://github.com/ann61c/wp-post-heatmap/releases/download/v0.01/wp-post-heatmap.zip

安装方式:下载后在 WordPress 后台上传插件并启用

使用方法:在文章或者页面中,输入[_heatmap_]即可(请自行去掉下划线)。

在线演示:

如果你想要添加新功能可以在 GitHub repo 里添加 issue 或者在该文章下评论。

特别感谢 椒盐豆豉 分享的源代码。

The post WP Post Heatmap 给 WordPress 博客添加热力图 first appeared on 雪糕.

2款简单的 WordPress 全站限制访问插件

作者 老俍
2023年5月10日 21:42

今天要介绍的这两款插件都可以实现让你的博客完全私有化,也就是说没有账户的访客只能看到登录页面。为什么有人想把博客完全私密划呢?1、只想记录给自己看的博客;2、某些内部使用的网站;3、特殊资源的网站。

Registered Users Only

Registered Users Only 安装完成启用后会在设置里面生成菜单进行管理,可以选择的功能只有三个,在没有注册登录的情况下,都会重定向到登录界面。

2款简单的 WordPress 全站限制访问插件

1、This is a default WordPress option placed here for easy changing.
1、任何人都可以注册

2、Allow access to your post and comment feeds (Warning: this will reveal all post contents to guests!)
2、允许访问您的帖子和评论源(警告:这将显示所有的帖子内容给客人!)

3、Allow access to your REST APIs (Warning: this will reveal all post contents to guests!)
3、允许访问您的REST API(警告:这将显示所有的帖子内容给客人!)

Force Login

Force Login 安装完成后甚至连个管理界面都没有,只要开启插件即可实现全站需要登录查看功能。如果是单纯想把博客私有化,Force Login 插件就够了。

❌
❌