解决Lifestream页面主题丢失问题

by noz

Lifestream是一个非常有用的插件,它可以把自己在各种互联网应用中发布的信息收集起来,形成属于自己的信息流。

Lifestream有多种使用方式,既可以放在Widget里,也可以建立专门的Lifestream页面,还可以在自动生成digest。在我的博客里就是生成了专门的Lifestream页面。

由于旧的Lifestream插件已停止开发,我现在使用的是wp-lifestream2但是,在最新版的中有一个bug:当刷新Feed之后,Lifestream页面的主题会载入失败,如下图:

Lifestream theme fails to load

Lifestream主题载入失败

而当在设置(Settings)里不需更改设置,点击保存后,即可使主题载入正常。正常的载入情况如图:

Lifestream主题载入成功

Lifestream主题载入成功

虽然很久以前有人已经提交过这个bug,但是尚未修复。没办法,只有自己进行修改。在我查看数据库后发现,是因为Lifestream_options记录中的Page_id值出错引起的。我发现Page_id为0时,主题载入正常,而Page_id为Lifestream页面真实id时会出错,这也就是为什么我们未更改设置但是保存后页面会恢复正常的原因,因为保存设置会将Page_id改为0,而读取feed会使Page_id值改为真实id。

下面是修改的方法,我们就是要使Page_id一直保持为0的状态。

修改/plugins/wp-lifestream2/inc/core.php文件,找到如下语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (!$this->get_option('page_id'))
{
get_currentuserinfo();
// First let's see if they have a legacy page:
$results = $wpdb->get_results($wpdb->prepare("SELECT `ID` FROM `".$wpdb->prefix."posts` WHERE `post_type` = 'page' AND (`post_content` LIKE '%%[lifestream]%%' OR `post_title` LIKE 'Lifestream') AND `post_author` = %d AND `post_status` != 'trash' LIMIT 2", $userdata->ID));
if (count($results) == 1)
{
$this->update_option('page_id', $results[0]->ID);
}
elseif (!count($results))
{
$this->create_page_template();
}
}

将其中的$results[0]->ID修改为0即可解决问题。