WordPress注册激活邮件、密码修改邮件在QQ邮箱乱码无法打开的解决方法

最近发现WordPress的一个存在了很久的BUG,在一些WordPress站注册账号时,点击激活邮件的链接总是提示“您的密码重设链接无效,请在下方请求新链接”,把链接复制到浏览器地址栏中依然提示错误:

Wordpress注册激活邮件、密码修改邮件在QQ邮箱乱码无法打开的解决方法

这里主要有两个BUG,一是邮件URL中的“&”被解析成了“&amp;”,导致复制整条URL也会提示错误;另一个BUG是WordPress在URL添加了一个“<>”,其中的“>”会被一些邮件服务商(比如国内通用的QQ邮件)解析成URL的一部分,导致你的超链接由http://xxx.com变成了http://xxx.com>,这样肯定是打不开的。

Wordpress注册激活邮件、密码修改邮件在QQ邮箱乱码无法打开的解决方法

若是站点仅仅为内部人员开放注册,这些BUG倒也无关紧要,如果站点是开放注册,这样的用户体验显然太差,本来WordPress的注册流程就不太符合中国用户的使用习惯,再加上这种bug,你是想让用户骂娘吗?

解决方法也比较简单,方法一是直接去改系统文件 /wp-includes/pluggable.php,涉事代码约在1896行(不同WP版本行数可能稍有差异)也可以Ctrl+F下面的代码直接定位:

/* translators: %s: user login */
$message = sprintf(__('Username: %s'), $user-&gt;user_login) . "\r\n\r\n";
$message .= __('To set your password, visit the following address:') . "\r\n\r\n";
$message .= '&lt;' . network_site_url("wp-login.php?action=rp&amp;key=$key&amp;login=" . rawurlencode($user-&gt;user_login), 'login') . "&gt;\r\n\r\n";

把最后一行的“>”删掉,然后把“wp-login.php?action=rp&key=$key&login=“改成“wp-login.php?key=$key&action=rp&login=”就可以了,懂PHP的同学仔细看一下就能明白,都是一些字符串解析的小问题。

不过此方法会直接修改WP核心文件,我们可以自己写一个函数勾到相关的钩子上,把这些系统设置给覆盖掉,由于本人技术比较菜所以直接Google了一段代码如下:

// 函数+过滤器 修复wordpress注册邮件无法打开的BUG
// 参考https://wordpress.stackexchange.com/questions/296308/custom-welcome-email-wordpress
// 2018-9-19
function edit_user_notification_email( $wp_new_user_notification_email, $user, $user_email ) {
global $wpdb, $wp_hasher;
$key = wp_generate_password( 20, false );
/** This action is documented in wp-login.php */
do_action( 'retrieve_password_key', $user-&gt;user_login, $key );
// Now insert the key, hashed, into the DB.
if ( empty( $wp_hasher ) ) {
require_once ABSPATH . WPINC . '/class-phpass.php';
$wp_hasher = new PasswordHash( 8, true );
}
$hashed = time() . ':' . $wp_hasher-&gt;HashPassword( $key );
$wpdb-&gt;update( $wpdb-&gt;users, array( 'user_activation_key' =&gt; $hashed ), array( 'user_login' =&gt; $user-&gt;user_login ) );
$switched_locale = switch_to_locale( get_user_locale( $user ) );
// send message
$message .= sprintf('您正在%s注册新账号,您的用户名为:',get_bloginfo('name')) .$user-&gt;display_name. "\r\n\r\n";
$message .= '请点击下方链接设置您的密码:' . "\r\n\r\n";
$message .= network_site_url("wp-login.php?key=$key&amp;action=rp&amp;login=" . rawurlencode($user-&gt;user_login), 'login') . "\r\n\r\n\r\n";
$message .= '如果您在注册过程中遇到困难,请邮件联系 xxx@xxx.com' . "\r\n\r\n";
$wp_new_user_notification_email['message'] = $message;
return $wp_new_user_notification_email;
}
add_filter( 'wp_new_user_notification_email' , 'edit_user_notification_email', 10, 3 );

把这段代码添加到function.php即可解决,相关的邮件话术也可以自定义。

除此之外,当用户通过“忘记密码”找回密码时也会遭遇此BUG,相关解决方法可以参考WordPress大学的相关文章:https://www.wpdaxue.com/lost-password-error-invalidkey.html

5年前的文章了,WordPress官方一直没解决这个BUG,真是让人醉了。

WAMP环境使用Mariadb无法安装WordPress的问题

WAMP可以切换mysql和mariadb,如果你把数据库建到mariadb,会在wordpress安装界面遇到信息明明正确(数据库名、数据库地址等)但却无法安装的情况。

原因是mysql和mariadb的端口号不同,mysql的端口号默认为3306,在数据库地址填写localhost会自动映射到localhost:3306,而mariadb的端口号默认为3307。所以,如果你使用mariadb建立数据库,只需要在数据库地址处填写localhost:3307就可以了。

关于资讯类网站目录结构设计与URL格式的一些思考

现在已经8012年了,SEO领域好像还是没什么长进,很多理论套用几年前的那些都还是通用。

一般的资讯平台的目录结构通常还是由聚合页、频道页、文章页三大类构成。

聚合页通常指首页(如www.sina.com.cn),一些大型网站还包括一些子频道的首页(如news.qq.com),就是一个链接,似乎没什么好讲的。对中小型网站,如果内容不充足,子频道能用二级目录就别用二级域名,二级目录对域名的权重提升更大。

频道页通常是一个简单的信息流页面,也可能是一个比较复杂的聚合页。如果网站的频道页比较多,应该事先对网站目录进行规划,防止以后目录变动对搜索引擎收录产生影响。

频道页URL有两种比较常见的格式:

第一个如www.example.com/子频道名称/各种ID,这种格式比较适合频道页数量极大的网站,比如tag比较多、作者比较多等等。优点是层级目录比较浅,URL短,对搜索引擎友好。缺点是URL中无法明确体现各个子频道、孙频道的隶属关系,搜索引擎通常只能通过链接提交、内链等方式索引各个页面。建议使用这种页面结构的网站做好新频道页的链接提交,并且在层级较高的目录做一些网站地图为搜索引擎导航。

第二个如www.example.com/子频道/孙频道/重孙频道(强迫症专属,如果网站还做面包屑的话,目录结构会非常漂亮)这种格式一定程度上可以引导搜索引擎通过URL索引各个频道页(取决于你网站的权重),缺点是URL可能过长,目录层级可能过深,维护成本较大。由于现在很多网站都会主动向搜索引擎提交新页面,其实也没必要非得设计成这个样子。

关于翻页,频道页目前有传统翻页和ajax翻页两种方案。

ajax翻页就是使用ajax在页面上直接请求翻页内容,无限加载内容,不会进行任何路由。优点是比较炫酷,通常用户体验也很好(不需重新加载页面,载入速度更快),缺点是某些场景的用户体验比较差,比如某个频道有几万条内容,如果用户想一次性翻到最后,那基本上是不可能了。另外,ajax翻页对SEO的影响有限,因为翻页页面对搜索引擎的意义不是很大,搜索引擎通常不会收录。

传统翻页就是那种在URL中能直接体现出第1页、第2页的方式了,优缺点与ajax翻页互补。至于URL设计,由于翻页页面反正对搜索引擎也没啥意义,没必要刻意纠结设计成什么样子,www.example.com/子频道/p2、www.example.com/子频道/page/2、还是www.example.com/子频道/?page=2,看个人喜好。

关于文章页URL,目前业内都普遍设计成 www.example.com/文章ID或www.example.com/文章名 的格式了,优点是URL比较短,缺点是某些时候URL会跟其他页面重复。有些人推荐加.html,其实在搜索引擎友好方面已经无所谓了,加.html倒是可以避免URL重复,毕竟www.example.com/1.html和www.example.com/1/(index.html)可是两个完全不同的页面。

如果网站目录比较复杂,设计成 www.example.com/post/文章ID 其实也无所谓,www.example.com/post/ 可以当做最新文章、文章归档之类的页面,即防止跟其他目录撞URL,又可以为搜索引擎导航。

传统一点的URL格式例如 www.example.com/频道名/文章ID,这种格式在以前比较常见,层级明确,面包屑漂亮,通常适合那种内容不多、内容与频道能够对应明确的网站。但对于目前内容爆炸,一篇文章能对应一百个tags的时代而言,这种目录结构的可扩展性显然太差了。

不论设计成什么样,如果搜索引擎已经对文章页进行了大量收录,不到万不得已不建议改变URL结构。即便做好301,对搜索引擎的影响也会很大,切勿作死。

其实抛开以上内容,搜索引擎对网站的权重衡量依然取决于内容质量,虽然内容质量也是通过算法计算出来的,不过算法不也是按照人的感情设计出来的?网站内容的原创度高、对访客有价值、内容能形成社会影响力,这样的网站才会受到搜索引擎的青睐,而SEO只是实现这一目标的途径。就好像做饭,内容是米,SEO是锅,如果没有米,锅再高级也是没有用的。

追寻自己的价值总是痛苦的

每个人都是不明不白来到这个世界上,毕竟出生这种事并不是他说了算的,何时诞生、出生在什么家庭、选择什么样的父母,他都无权决定。

所以每个人都需要成长,寻找一些能让自己满足的答案,自己为何来到这个世界上,自己活着的意义是什么,自己对于他人的价值又是什么?

这段追寻的旅程也许很短,也许漫长,有的人生下来就有了明确的答案,有的人活了一辈子可能都没想清楚。某种程度上,我应该感谢我的家庭能给我这段悠闲的时光让我去想这种问题。

 

黎明之前

有一件事已经困扰我很多年了,就是我经常梦到我学生时代的事情,而且这种梦做得非常频繁,一年365天几乎有200多天我都会梦到学校,有的时候只是一些很普通的梦,有时候则会梦到跟老师打架,有时则是没写完作业、没回答出问题、考试没答完卷子之类的噩梦。每当我跟别人谈到这件事,我自己都觉得可笑,自己为什么总是梦到这些,但大多数时候更是不解。

我觉得我现在活着的乐趣之一就是探求我以前的一些“异常”举动的原因,至少在18岁以前我做过很多令人匪夷所思的事,甚至连现在的我都无法理解。而我之所以探究它们,是因为我意识到一些事情至今仍在对我产生影响,如果我没办法消除这种影响,我可能会一直生活得不幸福。

我很想找个地方把我最近的思考结论找个地方记录下来,因为在日复一日回忆的煎熬中,我已经发现自己小时候努力学习的初衷其实并不单纯。

至少从我发现我爷爷经常因为我很乖、学习很成绩好而夸奖我,进而从他那种癫狂的精神状态中解脱出来的时候,这种念头就已经萌发了,算算那都是小学一年级的事情了。我那时总觉得只要自己足够优秀,就可以平息家庭内部纷争。既然我这么优秀,你们能否看在你们拥有一个如此优秀的儿子和孙子的份上不再相互敌视了?

另一方面,我又觉得自己除了会考高分之外也没什么过人之处,当时自己长得又油又胖(自卑),性格又不好(用来掩盖自卑),朋友也少(有时候优秀的小孩容易被人孤立。也有可能是优秀者本身也不太擅长处理人际关系),又总是被我妈评价为“该生经常在家里看电视”,所以也只能不停逼自己考得更好来维持自己可怜的安全感。既然我这么优秀了,父母你也肯定肯定我呗,多匀给我一点注意力呗,然而大多数他们的态度总是不冷不热,我总认为他们还是觉得我不够优秀,期末返校拿到成绩单,白天打电话把考了年级第几第几的成绩报过去,还要被数落几句xx科为什么总是丢分,晚上还得担心他们回来继续数落我。

事实上这两个支撑我努力学习的理由,后来都走向了崩塌。家里依然争吵不断,没有任何改观。父母除了给点零花钱,平时还是在忙着做生意(虽然我现在知道他们其实一直很关心我,只是不方便直接表达出来。另外正是他们总是在忙着做生意,给我现在减少了很多奋斗的负担撒~)至少当时的事实证明,你所谓的当三好学生的理由,只不过是你一厢情愿的想法,我很早就意识到了这一点,只是不太愿意去承认,更多的时候是因为茫然,不知道该怎么做——当时也没有什么人来开导我,也没人像现在这样看我每天疯狂刷刷朋友圈、疯狂点赞,我也不想跟别人倾吐什么,一方面我是好学生,是“完美的”,另一方面对父母长辈说出来也就换回一句“你这么小,懂什么,把学习成绩搞好就得了”之类的老生常谈,与其这样莫不如什么都不说。

我总觉得自己有朝一日终究会被学习成绩给坑了,总打算发展点副业,以免有一天自己真变得一文不值。那时候觉得自己除了思维比较嘎,能写点异于常人的文章之外,似乎也没什么特长了(游戏打的也好,可那时候并没有游戏产业啊)高中的时候还跑到学校门口的餐馆打零工,以免自己考不上大学还能靠端盘子养活自己,现在想想这动机是得有多傻。

然而我对这种生活终究是厌倦了,直接动因可能是我们家庭的不安定因素突然消失了一位,我们家的生活终于变得正常了,我的父母终于能全权接管我的生活了,然而我发现我却没办法变正常起来——因为我一直就不正常啊。你为什么而学习,你当初还不是为了让父母长辈开心,让他们别总是互相敌视才努力学习的嘛,现在他们其中一位已经不在了,家庭内部矛盾已经消失了,那你还学个什么劲啊?另一方面,这么多年都熬过来了,可是有人肯定过你的所作所为吗?你在外面明明是“别人家的孩子”,可在家里,父亲永远都是一言不合就发火,母亲永远都觉得你还不够好。既然他们永远不知满足,那你为何不变得不优秀一次,来“报答”一下他们的养育之恩?

然而以上这些陈芝麻烂谷子的回忆性内容,依然解释不了我为什么总是在做考试没考好之类的噩梦。我现在也觉得自己过分健忘,虽然有一些回忆确实有点不堪,也不适合拿到大庭广众地方写,但也不至于一次性把它们全都丢干净,就像丢垃圾一样。至少在后来的日子里我依然表现出了极端的敏感,情绪依然是极度不稳定,直到我意识到一些陈芝麻烂谷子的事情还是得解决一下,这些原生家庭对你造成的影响已经写到了你的人生中,如果你不能把那些不好的内容及时剔除掉,那接下来的一生也不过是将痛苦的回忆不断地重复。

我现在认为,所谓“考试没考好”的噩梦,既是“如果你不优秀,后果会很惨重”的一种潜意识映射,这在以前甚至就是我生活的全部价值。即便很多年过去,这种“你要变得优秀,否则别人就会抛弃你”的不安全感一直在我潜意识里作祟,所以我要不停地更换生活环境,不停地换似乎更有出路的工作,不敢对他人倾注太多感情,以免有朝一日被人抛弃时会显得很被动。说到被动,明明自己平时很怠惰,在别人面前却总得装出很勤奋、很有责任感的样子,让别人不断肯定自己,让别人不断承认自己优秀,进而满足自己“一旦有朝一日生活发生变故,自己好有办法游刃有余地处理”之类的想法。说到底,还是动荡的原生家庭造成的安全感的缺失,让我在后来的日子里一直对自己以外的一切缺乏信任。

记得之前看到一个渠县高中生自杀的新闻,当时还特意搜出了那位男生的QQ空间,去看了他写的自杀遗书,那时候觉得这孩子真是太可惜了,他那个年级还没有足够的阅历去处理如此复杂的情绪,他也许真的是死在了黎明之前。刚才又把他的日志翻出来读了读,又觉得自己根本没资格去评论他,自己即便活到这个岁数,不也依然活在自己的阴影下吗?即便现在的阴影已经不再像曾经那样严重了。

有时候我觉得活着挺好,虽然我依然无法享受活着能去爱一个人的感觉,但我一直很享受活着能去做我喜欢做的事情的感觉。可每当那些阴暗的回忆被触发,我又觉得活着突然失去了任何意义,没有任何事情能让我真正开心起来,哪怕我在北京拥有一套房产,我也没办法开心起来,甚至连“拥有一套房产”之类念头都是以前的阴影催生出来的,因为我对家庭一直缺乏安全感,一直想追求一种只有我一个人的家的感觉。

我也不知道我该对原生家庭说些什么,我能观察出来,我父母先前的种种举动也是受到了他们各自原生家庭的影响。看着现在的他们,看着现在的我,不得不承认人可以走出过去的阴影,你可以走出50%、走出80%,但你不可能100%走出你的过去,正是由于你的过去成就了现在的你。

如果真的想逃离这种循环,那就期盼人有来世吧。

新媒体时代,做内容一小时,发内容一整天

最近搞了个游戏新媒体账号,才发现现在做内容分发真麻烦。以前是“写稿一分钟,找图一小时”,现在变成“写稿一分钟,找图一小时,发文章能发一整天”,从微信到头条,从知乎到微博,同一篇文章各个平台都得发一遍,碰上个大厂可以直接转存图片的还好,否则就得文字+图片传上去一点一点重新排版,真特么烦

回想Blog时代的时候还没这么多麻烦,那时候也没有这么多搞内容分发的超级平台,大家的流量很多都靠口碑积累,虽然门户的推荐也是能带量的,但也没有现在平台给你加个权,就动辄几万几十万带量的规模啊。

移动互联网时代就是这么可怕,手机取代PC和纸媒变成了阅读终端,而且垄断级别远胜上一轮PC取代纸媒的那个年代。

不过从另一个角度思考,曾经Blog的时代——自媒体野蛮生长的时代,内容变现也是一个天方夜谭啊?阮一峰在Blog上搞付费阅读也不是很久以前的事。不像现在自媒体、新媒体可以通过影响力变现,变现途径终归是有的,实在不行还可以认爸爸、吹泡沫。

分析那么多原因似乎也没用,市场风口出现了,新媒体产业就这样自然而然兴起了,分析再多也都是马后炮。

究竟什么是“互联网思维”?

以前我党总是在讲一个词“互联网+”,总觉得挺傻的,每次听到都特恶心。

最近又觉得“互联网+”还是很有道理滴,我党的领袖们肚子里还是有干货滴(当然,互联网+并不能覆盖所有类型的互联网产品)大概是硅谷精神活不下去了,Geek精神经历了“风口”、又经历了“用户体验”,终于撑不住承认自己没钱是loser了。

最近总在想今日头条出现之前,无觅不是也搞了一个个性订阅的网页端社区嘛,虽然只活了几个月;再之前还有抓虾、鲜果RSS,虽然都是历史的眼泪。

“互联网思维”这几个字原本是一群硅谷Geek和向往硅谷精神的人搞出来的,后来却被一群卖弄嘴皮和脸皮的自称“产品经理”的老板们抢走了,PM们风风光光了好几年。如今大浪淘沙,到头来有没有互联网精神,那还得看“需求到底能不能实现”,毕竟嘴巴能讲出用户体验这四个字,但嘴巴能拱出负载均衡吗?

一个人究竟能做多少事?

有时候觉得一个人做不了多少事,一个人的话享受人生就好了。享受人生的话无外乎开开心心快快乐乐的,虽说争名逐利也能带来一定的快乐……不过远没有吃吃喝喝、玩玩乐乐来得实在。

如果真的要去争名逐利的话,一个人肯定是不够的。

犯春

很多年没在这个季节待在老家了,闻着家乡的空气,总是想起很多学生时代的事。

最近做梦也是每晚必回到初中,梦到那些熟悉的老师和同学,昨天晚上好不容易梦到了大学课堂,可老师和同学依然是初中的。

不过,像我这种一年365天有200天都会梦到学生时代的人,已经见怪不怪了。我到现在也解释不了这个现象。

人岁数大了,对很多事情的看法会发生改变。我好像也不再那么怅惘过去了,虽说偶尔还是会怀念,看到不经意的东西,就会启动那些或是阴暗或是美好的记忆联想,但已经知道自己为何而回忆、为何而念旧,于是虽然也在怀念,但却觉得坦然很多,也就没那么多无端的烦恼了。

家乡的空气依然那么甜美,虽然自己也在不断告诫自己,这里已经不是你心中的那个家乡,你心里的那个家乡连同那些记忆永远只活在你的心里,你也可以说那只是一段你想象出来的用来安慰自己的记忆罢了。人活着是需要追求意义的,过去我一直在寻找,我想知道我因何而来,我因何为我,我对亲密关系、对世界的看法、对别人附加给我的命运充满了疑问,我想控诉我所经历的不公,却又找不到什么行之有效的答案。

现在我突然找到了,我终于知道了我因何而为我,我知道了是什么经历造就了我与他人的区别,我该如何处理与回忆的关系。同时也觉得一切不过如此,就好像做了一场梦。人活着就是为了不断寻找自己的价值,并去实现它,我现在好像又找到了几个,人生这么短,能找到一些自己想做的事或喜欢的东西多么难得,突然觉得还是活着好。