WordPress的Related Posts插件出现了严重的安全漏洞且未修复,官方插件市场已经将其下架。Contextual Related Posts在功能和表现上与Related Posts相差不大,设置上也大体通用,这让Contextual Related Posts成为新的热门选择。

但是Contextual Related Posts存在诡异的不起作用问题,尤其是初次安装时:设置各种参数没效果,卸载重新安装可能就生效了。根据作者在官方论坛上的回复,如果有插件不起作用,建议操作是:1. 设置中勾选“Related posts based on title and content”;2. 卸载后重新安装。

昨天有个新站点,百般折腾也不能显示相关文章,今天醒来后不服气,开始打开vim断点输出定位问题,一路跟踪,发现竟然是执行sql语句时出现了错误:“ERROR 1214 (HY000): The used table type doesn’t support FULLTEXT indexes”。

根据经验,这是因为表使用的存储引擎不支持全文索引。通过show table status like 'wp_posts'show create table wp_posts命令查看输出,确认表使用了InnodDB而非支持全文索引的MyISAM引擎,与预期一致。

问题已经找到,解决办法就比较简单了,步骤如下:

  1. 更改表的存储引擎为MyISAM: alter table wp_posts engine=MyISAM;
  2. 卸载重新安装插件,或者手动在几个字段上建立全文索引: alter table wp_posts add FULLTEXT crp_related (post_title,post_content); alter table wp_posts add FULLTEXT crp_related_title (post_title); alter table wp_posts add FULLTEXT crp_related_content (post_content);

其中第二个步骤中的语句是本人从插件的安装函数中找到。如果你不放心,建议卸载后重新安装,避免有遗漏的初始化设置未完成。

按照以上操作解决问题后,删除缓存,访问文章页面,底部应当能出现预期的相关文章了。

参考

  1. Not showing any related posts, also not showing the custom text