标签: wordpress

文章摘要显示出错

这两天把博客给恢复了,可是主页一直是有空白的,在本地试的时候没有问题,以为是主机的网络问题,一直没在意。后来发现网通访问我的博客速度也快了,但是就是主页卡在那里无法显示,悲催啊。看了下已经加载的页面,感觉是主题中的index.php那点的问题。因为加载到了文章摘要那里就无法显示了。尝试的删去显示摘要的代码后,主页正常了。可是摘要又无法显示。查了一下用的那些代码,那几个函数strip_tags,str_replace,mb_strimwidth,mb_strlen。发现需要开启mb_string 模块,mb_strimwidth函数才能使用。真悲催,原来是主机缺少了这个,真是用原生的kloxo问题不少呀,还是需要折腾。

操作方法:
SSH登陆,运行yum -y install php-mbstring,开始安装,结束之后reboot重启。

中间查询了一下php.ini,发现有好多,目前还不知道是怎么回事儿。大体位置如下:
/home/httpd/域名名称/php.ini
/usr/lib/kloxophp/zend/etc/php.ini
/usr/local/lxlabs/ext/php/etc/php.ini
/usr/local/lxlabs/kloxo/httpdocs/htmllib/filecore/php.ini
/usr/local/lxlabs/kloxo/httpdocs/htmllib/filecore/lxetc/misc/php.ini
查询方法
find / -name php.ini

对于不是自己架设的童鞋,在网上找到一种折中方法,不知道管用不,转载过来。

没有开启 mb_string 也能使用 mb_strimwidth() 函数

并不是所有主机都默认支持mb_strimwidth()这个函数的,前提是要开启 mb_string 这个模块。那如果主机没有开启 mb_string 就不能使用 mb_strimwidth() 函数了吗?有没有变通的办法呢?答案当然是 YES,于是也就有了本文。

先在 WordPress 主题的 functions.php 文件中添加如下代码:

function dm_strimwidth($str ,$start , $width ,$trimmarker ){
    $output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
    return $output.$trimmarker;
}

接下来在需要的地方调用如下:

post_content),0,200,'......[阅读全文]');?>

用过 mb_strimwidth() 函数的朋友已经发现了,这个新建的函数和 mb_strimwidth() 的用法是一模一样的,如果你的主机不支持 mb_string 扩展库,那可以试试本文的方法哟。

Linux下wordpress自动升级

大家一定对Linux下的权限又爱又恨吧,wordpress总是因为这些会不能正常升级,下面总结一个方法便于自动升级,其实懂一点的人一看就知道啦,特此记录。
1、修改WordPress目录由Apache服务器的用户名所有。参考命令如下:
chown -R apache *
2、修改所有文件权限为777。参考命令如下:
chmod -R 777 *
3、关闭所有插件
4、点击升级,成功后,开启重建
5、恢复wordpress为admin所有,文件权限为775。
需要设置文件权限为777的文件夹
cache
wp-content
archivers

Micro-M主题之您没有足够的权限访问这个页面

Micro-M这个主题升级到3.2.1还是有些bug的。下面就出现了一个。当然,这个应该算作是恋月修改版中出现的问题,原版当中没有。
问题:打开一些插件的时候,会提示您没有足够的权限访问这个页面。我这里出问题的是my-visitors插件。
解决的办法目前查到的只有去掉挂在后台菜单栏上的钩子。方法如下:
修改functions.php,查找“后台管理”,注释掉后面一句引入。
//后台管理
//include (TEMPLATEPATH . ‘/admin/admin.php’);

但是去掉后貌似logo和副标题就没了。纠结啊!忽然想去恋月(地址请看主题最下方)那里看一下,居然有新的版本出来了,已经完美支持WP3.2。哎,更新,停止折腾…

Micro-M主题网站导航中的分类显示

主题终于折腾的差不多了,其实已经比较简单了Microhu,LianYue两位同学已经让我们省去很多事情。只是那个网站导航的分类显示不知道怎么没弄成,是我主题没设置好?还是他们两个忘了,呵呵。下面就是调用网站分类的代码。
带显示子类的

不显示子类的

把上面代码插入到主题目录的archives.php文件中,下面语句的上面一行即可。




文章归档

PS:如果分类较多,可以多加几个br标签,不然会错位,作者就加了三个哦~

参加拿福能拉

我也来参加拿福能了,原来注意到的时候才100多人,没过几天就到了300。现在居然都600多了,呵呵。我也就赶紧参加了。趁着换新主题的时机,再折腾折腾。哎,折腾WP实在太累了。拿福能博客广告社区,前1000名每人50块哦,可能以后大家还能在一起聚会,哈哈,快来参加吧。

点击这里进入哦。

解决评论回复乱码问题

好吧,我承认在这段时间里比较懒散,连个回复乱码的问题都没有解决。今天就一起搞定了。结论是apache的设置,需要找到apache的httpd.conf,修改默认编码的设置,如下:
首先用SSH登陆VPS,修改httpd.conf文件
cd /etc/httpd/conf/
vi httpd.conf
查找:AddDefaultCharset
把:AddDefaultCharset GBK
改为:AddDefaultCharset UTF8 或 AddDefaultCharset OFF
重启Apache:service httpd restart
原来就这么简单……

备份恢复需要注意的事项

1、用ssh登陆后,解压上传内容,文件变成了root拥有,需要改成admin或者apache等。使用的命令chown -R admin *
2、重装后,上传的文件目录需要设定相应的权限,例如777,保证程序的正常运行。
使用的命令chmod -R 777 cache
需要设置777点文件夹
cache
wp-content
archivers
3、自动备份脚本需要重新部署。
4、上传后解压,伪静态文件.htaccess并没有上传,不知道什么原因。重新上传后正常。

彻底清理wp-option

网上似乎有很多清除wp-option的方法,还有用插件的,最彻底的当然就是下面这种偷梁换柱的了。我是在zww那里看到的,不过好像网上已经泛滥了。方法转载如下:
第一步
1、备份博客数据库
2、停止博客所有插件
第二步
1、在本地搭建的php环境新安装一个WordPress(推荐用Xampp)
2、安装好后,按照博客网站设置一下,如博客名称、简介、固定链接等(也可以暂时不设置)
3、进入本地的phpmyadmin(一般是http://localhost/phpmyadmin),导出新建的WP博客数据库里面的wp_options表,导出的文件命名为 wp_clear.wp_options.sql
第三步
1、博客的主机后台,进入phpmyadmin,清空WP博客数据库的 wp_options,
2、导入本地导出的 wp_clear.wp_options.sql
第四步
这样就搞定了,这时进入WP博客后台设置,重新激活插件 + 设置,选择主题。
PS:在折腾过程中我还出现了本地wordpress后台白屏的问题,详见《WordPress后台白屏问题
PS:我还发现用软件连接mysql更高效。在折腾过程中,要反复导入整个数据库,原因如上。Navicat Lite导入整个4兆的数据库只要36s,而phpmyadmin则300s超时。
zwwooooo 原创文章《彻底优化清理wp_options》,willin原创方法

WordPress后台白屏问题

马上准备停止折腾WP了,So……准备优化一下就仍在那里,但问题就这样接踵而来,就来总结一篇吧。

从linux主机上移植下来的整个博客居然登陆后台是白屏(本地是winxp+apache+mysql+php)。怎么折腾都不好,据说是UTF-8编码BOM问题,叙述如下(转载): Windows下对于UTF-8编码的文本文件在被用默认的记事本打开后,在保存的时候,Windows会自动在文件的头部添加三个隐藏的字符0xEF 0xBB 0xBF,也就是BOM(Byte Order Mark,即字节流标记),它的作用是让应用程序识别该文件的编码格式。众所周知PHP最常用的架构为LAMP(Linux+Apache+MySQL+PHP),并不是为Windows平台设计的,最初语言设计时并为考虑到Windows下的BOM问题,所以PHP在执行的时候并不会忽略BOM,在读取、包含或者引用这些文件的时候,PHP会将BOM的三个隐藏字符当作文件正文开头的一部分。根据脚本语言的特点,这串字符将会被显示出来,由此造成即使页面的top padding设置为0,也无法让整个网页紧贴浏览器顶部,因为在HTML的开头有这3个字符。但这并不是最让人头痛的问题,受到Cookie送出机制的限制,在这些开头已经有BOM的文件中,Cookie无法正确送出(因为在Cookie送出前PHP已经送出了文件头),所以WordPress登入和登出功能失效。并且一切依赖于Cookie、Session实现的功能全部无效,无法保存、更新任何设置。
所以在Windows上用PHP进行WordPress开发时,务必记住不要用记事本编辑文件,而要使用不会为文件乱加BOM的编辑工具,如Dreamware、Notepad2等。而已经遇到白屏问题的:1、如果只是更改了WordPress的安装配置文件wp-config.php而导致白屏的,只要将从WP官方下载的压缩包中的wp-config.php用正确的编辑器打开编辑后,上传替换空间中的版本后即可正常登陆和使用。2、如果是自己开发的主题存在BOM问题的,只要将自己的主题先删除,用WordPress默认的主题先登陆后台,然后在后台对默认主题进行编辑,将自己主题的代码复制粘贴到默认主题相应文件中去,就可以了!(相关插件解决方法类似)
看了以上原因,我发现很有可能是因为过年的时候在亲戚家没有使用Notepad2所产生的,当然也有可能是以前就带有的。我采用了第二种方法,无奈的只能把power的主题在修改一遍。要确保在Notepad2的文件菜单下的编码选项为UTF-8(无签名),换行编码为Unix(LF)。虽然不知道有没有用,但是我觉得这是必要的。我直接在原先错误的主题上修改这些选项没有作用,所以只能重复劳动,一点一点对照着修改过的主题再改一遍,好在不需要太多时间。

PS:之所以要把博客移植到本地,是因为我准备要优化一下表wp-option,想先在本地测试,现在已经测试成功,详见《彻底清理wp-option

使my-visitors通过Gmail发送数据库备份

在my-visitors.php文件中查找$phpmailer = new PHPMailer();

在上面这句下面加上如下代码:

$phpmailer->IsSMTP();
$phpmailer->SMTPAuth = true;         
//打开SMTP验证
$phpmailer->SMTPSecure = "ssl";       
//利用SSL连接
$phpmailer->Host = "smtp.gmail.com";      
//设置主机为Gmail
$phpmailer->Port = 465;                   
//指定SMTP端口
$phpmailer->Username = "yourname@gmail.com";  
//Gmail账号
$phpmailer->Password = "123456";             
//Gmail密码

即在$phpmailer = new PHPMailer();
………………
$phpmailer->AddAddress(get_bloginfo(‘admin_email’));
中加入设定SMTP的代码。

保存后上传就可以通过Gmail发送数据库备份了。测试方法参考willin大师的注释:)
即:在ftp上把今天的数据备份删除,在后台选择“将数据备份邮寄给管理者”,按下“保存更改”,再转换到其他任何一页,就会产生备份和邮寄,马上看到有没有收到邮件。

PS:在删除过程中有一个小插曲。由于使用的是kloxo面板,用ftp的admin权限不够,需要使用apache权限或者root权限。因为创建的文件拥有者是apache。