WordPress主机不支持fsockopen()函数的解决方法

出现如下代码:

  1. Warning: fsockopen() has been disabled for security reasons in /home/~/domains/luckb.com/public_html/wp-includes/class-snoopy.php on line 1142  
  2. Warning: Cannot modify header information – headers already sent by (output started at /home/~/domains/luckb.com/public_html/wp-includes/class-snoopy.php:1142) in /home/~/domains/luckb.com/public_html/wp-includes/pluggable.php on line 868  

是因为有的linux服务器为了考虑安全性,服务器关闭了fsockopen()函数。
解决办法:
方法一:经过phpinfo()查看确实没有启用fsockopen()和pfsockopen()两函数,在错误提示文件wp-includes/class-snoopy.php的文件头添加:

  1. @error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);  

方法二:打开错误提示文件wp-includes/class-snoopy.php的文件,将fsockopen()函数替换成@fsockopen()函数即可,如:

  1. if($fp =@fsockopen(  
  2. $host,  
  3. $port,  
  4. $errno,  
  5. $errstr,  
  6. $this->_fp_timeout  
  7. ))  
  8. {  
  9. // socket connection succeeded  
  10. return true;  
  11. }  

纯代码实现wordpress文章隐藏内容评论可见

在社区论坛里,楼主发表帖子的时候一般会把重要内容隐藏起来,用户回复帖子后才能看见,有效地避免看帖不回,提高论坛的活跃度。把该功能引进wordpress网站,也能有效地提高网站的评论数量(当然垃圾评论也会相继增加),提高wordpress站点的活跃度。前面介绍过使用Easy2Hide插件实现该功能效果,本篇内容是介绍通过纯代码实现wordpress文章内容评论可见。
在当前主题的functions.php文件添加以下代码

  1. <?php  
  2.     function reply_to_read($atts, $content=null) {  
  3.         extract(shortcode_atts(array(“notice” => ‘<p class=“reply-to-read” style=“border-width: 1px 1px 1px 1px;border-color: #F2F2F2;line-height: 150%;”><blockquote><font color=“#ff0000”><b>温馨提示</b></font>: 隐藏内容需要<a href=“#respond” title=“点击进行评论”> 回复评论 </a>后才能查看, 评论后请 <strong><a href=“javascript:location.reload()” title=“点击刷新”> 刷新 !</a></strong>.</blockquote></p>’), $atts));  
  4.         $email = null;  
  5.         $user_ID = (int) wp_get_current_user()->ID;  
  6.         if ($user_ID > 0) {  
  7.             $email = get_userdata($user_ID)->user_email;  
  8.             //对博主直接显示内容  
  9.             $admin_email = “xxx@mf158.com”//把左面的邮箱换成博主Email  
  10.             if ($email == $admin_email) {  
  11.                 return $content;  
  12.             }  
  13.         } else if (isset($_COOKIE[‘comment_author_email_’ . COOKIEHASH])) {  
  14.             $email = str_replace(‘%40‘, ‘@’, $_COOKIE[‘comment_author_email_’ . COOKIEHASH]);  
  15.         } else {  
  16.             return $notice;  
  17.         }  
  18.         if (empty($email)) {  
  19.             return $notice;  
  20.         }  
  21.         global $wpdb;  
  22.         $post_id = get_the_ID();  
  23.         $query = “SELECT `comment_ID` FROM {$wpdb->comments} WHERE `comment_post_ID`={$post_id} and `comment_approved`=’1′ and `comment_author_email`='{$email}’ LIMIT 1”;  
  24.         if ($wpdb->get_results($query)) {  
  25.             return do_shortcode($content);  
  26.         } else {  
  27.             return $notice;  
  28.         }  
  29.     }  
  30.     add_shortcode(‘reply’, ‘reply_to_read’);  
  31. ?>  

注:把代码中的“xxx@mf158.com”换成博主邮箱地址

编辑文章的时候,使用[reply][/reply]把要评论可见的内容包围起来,如:

  1. [reply]评论可见的内容[/reply]  

文章会显示:

  1. 温馨提示: 隐藏内容需要 回复评论 后才能查看, 评论后请 刷新 !.  

也可以使用格式:

  1. [reply notice=“自定义的提示信息”] 评论可见的内容[/reply]  

自定义温馨提示的内容。

提醒:如果开通了评论审核,那么内容需要评论审核通过后才可以看见!

解决wordpress主机不支持mail()函数插件WP Mail SMTP

wordpress插件WP Mail SMTP是一款可以解决因为wordpress主机禁用或者不支持mail()函数从而无法实现在线收发邮件功能的插件,例如contact form 7插件由于wordpress所使用主机不支持或禁用mail()函数导致提交失败的问题就可以得到很好的解决。下面是通过设置wp mail smtp插件和contact form 7插件解决cf7提交失败问题的具体操作步骤。

WP Mail SMTP设置图示:

1、通过后台“插件——安装插件”搜索“WP Mail SMTP”进行在线安装插件,安装成功后,进入后台的“设置——Email”对该插件进行设置:
WPMailSMTP-setting.jpg
From Email:发送的邮箱地址,留空则使用“设置——常规——电子邮件地址”中的邮箱地址;
From Name:发送人名称;
Mailer:由于主机不支持mail()函数,所以选择“Send all WordPress emails via SMTP.”;
Return Path:返回路径,勾选;
SMTP Host:邮箱的SMTP服务器,QQ邮箱的是smtp.qq.com,非QQ邮箱请咨询邮箱服务提供商;
SMTP Port:端口,一般是25;
Encryption:是否加密,一般选择“No encryption.”;
Authentication:是否验证,选择“Yes: Use SMTP authentication.”;
If this is set to no, the values below are ignored.”;
Username:邮箱的用户名,要保持和上面的From Email邮箱地址一样;
Password:邮箱对应的密码。
2、设置好后,点击保存更改,然后对设置进行测试是否可以成功发送邮件,在Send a Test Email
To:后台输入要接收邮件的邮箱地址,然后点击Send Test。
WPMailSMTP-test.jpg
如果提示以下信息,表示配置成功:

  1. Test Message Sent  
  2. The result was:  
  3. bool(true)  

Contact Form 7设置图示:

成功配置WP Mail SMTP插件后,进入已创建的contact form 7联系表单,在邮箱部分,把发件人中的“[your-name] <[your-mail]>”改为WP Mail SMTP插件中设置的邮箱地址,如本篇教程示例,应该改为[your-name] <[leonhere@qq.com]>
WPMailSMTP-ContactForm7.jpg
设置好后,到前台测试提交表单,如果还是提示“你的留言发送失败。请稍后再尝试发送或者使用其他方法联系管理员。”,那么继续按下面的步骤进行操作:

在contact-form-7插件文件夹中的includes文件夹找到classes.php文件并对其进行编辑,在该文件中找到代码:

  1. $headers = “From: $sender\n”;  

修改为:

  1. //$headers = “From: $sender\n”;  

或者修改为:

  1. $headers = “From $sender\n”;  

保存即可。做到这一步一般可以解决问题,如果依然无法解决,那么~~~~~~~~~~~或者换空间更容易一些!

WordPress批量删除全部文章缩略图

此功能在WordPress网站改版时可能会用到,通过代码批量删除数据库里全部已发表文章的缩略图,缩略图文件依然存在于附件目录。在主题functions.php中添加以下代码即可,一旦保存了functions.php,全部文章缩略图都会被删除,执行了一次以后,应该立刻删除这段代码,否则将不可能给文章再添加缩略图,因为会继续自动删除。
global $wpdb;
$attachments = $wpdb->get_results( "
SELECT *
FROM $wpdb->postmeta
WHERE meta_key = '_thumbnail_id'
" );
foreach ( $attachments as $attachment ) {
wp_delete_attachment( $attachment->meta_value, true );
}
$wpdb->query( "
DELETE FROM $wpdb->postmeta
WHERE meta_key = '_thumbnail_id'
" );

WordPress无插件实现游客投稿功能

作者笔名:郑力
作者邮箱:admin@zlphp.com
作者主页:http://www.zlphp.com
文章内容:
1、复制主题文件page.php重命名为contribute.php。
2、在

  1. <?php get_header(); ?>  

前面添加如下代码:

  1. <?php    
  2. /*  
  3. Template Name:游客投稿  
  4. */    
  5. if(isset($_POST[‘contributeform’])&&$_POST[‘contributeform’]==’send’){    
  6.     global $wpdb;    
  7.     $last_post=$wpdb->get_var(“SELECT post_date FROM $wpdb->posts WHERE post_type = ‘post’ ORDER BY post_date DESC LIMIT 1”);    
  8.     if(current_time(‘timestamp’)-strtotime($last_post)<60){wp_die(‘投稿间隔应至少为1分钟!’);}    
  9.     $name=isset($_POST[‘authorname’])?trim(htmlspecialchars($_POST[‘authorname’],ENT_QUOTES)):;    
  10.     $email=isset($_POST[‘authoremail’])?trim(htmlspecialchars($_POST[‘authoremail’],ENT_QUOTES)):;    
  11.     $url=isset($_POST[‘authorurl’])?trim(htmlspecialchars($_POST[‘authorurl’],ENT_QUOTES)):;    
  12.     $title=isset($_POST[‘articletitle’])? trim(htmlspecialchars($_POST[‘articletitle’],ENT_QUOTES)):;    
  13.     $category=isset($_POST[‘cat’])?(int)$_POST[‘cat’]:0;    
  14.     $content=isset($_POST[‘articlecontent’])?trim(htmlspecialchars($_POST[‘articlecontent’],ENT_QUOTES)):;    
  15.     if(emptyempty($name)||mb_strlen($name)>30){wp_die(‘作者笔名必须填写,且长度不能超过30个字符!’);}    
  16.     if(emptyempty($email)||strlen($email)>60||!preg_match(“/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix”,$email)){wp_die(‘作者邮箱必须填写,且长度不能超过60个字符,并符合邮箱格式!’);}    
  17.     if(emptyempty($title)||mb_strlen($title)>120){wp_die(‘文章标题必须填写,且长度不能超过120个字符!’);}    
  18.     if(emptyempty($content)||mb_strlen($content)>20000||mb_strlen($content)<100){wp_die(‘文章内容必须填写,且长度不能超过20000个字符,不能少于100个字符!’);}    
  19.     $post_content=’作者笔名:’.$name.'<br />作者邮箱:’.$email.'<br />作者主页:’.$url.'<br />文章内容:<br />’.$content;    
  20.     $contribute=array(‘post_title’=>$title,’post_content’=>$post_content,’post_category’=>array($category));    
  21.     $status=wp_insert_post($contribute);    
  22.     if($status!=0){    
  23.       wp_mail(.get_option(‘blog_mail_username’).,.get_option(‘blogname’).’游客投稿’,’您的’.get_option(‘blogname’).’有游客投稿!’);    
  24.       wp_die(‘投稿成功,您的文章将在审核通过后发布!’,’投稿成功’);}    
  25.     else{wp_die(‘投稿失败’);}}    
  26. ?>    

3、在

  1. <?php the_content(); ?>  

后面添加以下代码:

  1. <form method=“post” action=“<?php echo $_SERVER[“REQUEST_URI“]; ?>”>    
  2. <div class=“contributebox”>    
  3.   <div class=“inputclass”><input type=“text” name=“authorname” id=“authorname” value=“” /><label for=“authorname”>作者笔名(必填)</label></div>    
  4.   <div class=“inputclass”><input type=“text” name=“authoremail” id=“authoremail” value=“” /><label for=“authoremail”>作者邮箱(必填)</label></div>    
  5.   <div class=“inputclass”><input type=“text” name=“authorurl” id=“authorurl” value=“” /><label for=“authorurl”>作者主页</label></div>    
  6.   <div class=“inputclass”><input type=“text” name=“articletitle” id=“articletitle” value=“” /><label for=“articletitle”>文章标题(必填)</label></div>    
  7.   <div class=“inputclass”><?php wp_dropdown_categories(‘show_count=1&hierarchical=1‘); ?><label for=“cat”>文章分类(必选)</label></div>    
  8.   <textarea name=“articlecontent” id=“articlecontent” onblur=“if(this.innerHTML==”){this.innerHTML=’文章内容…’;this.style.color=”}” onFocus=“if(this.innerHTML==’文章内容…’){this.innerHTML=”;this.style.color=”}”>文章内容…</textarea>    
  9.   <input type=“hidden” value=“send” name=“contributeform” />    
  10.   <input type=“submit” class=“contributesubmit” id=“contributesubmit” value=“确认投稿” />    
  11. </div>    
  12. </form>    

4、新建页面,页面模板选择“游客投稿”。

取消wordpress主题对google maps api的调用

最近那GOOGLE的很多调用出现问题,为啥?你懂的!
所以最近客户告诉我他们网站打开奇慢无比,要求我帮助解决一下。

我进到网站以后,查看了源代码,看出了是由于GOOGLE字库的问题,进FTP,下载了wp-includes/script-loader.php文件,把里面和googleapis.com有关的,一起给替换为了useso.com,完了上传以后,问题出来了,感觉速度还是没有什么提高啊,再看源代码,发现还有一个家伙很顽固啊,它叫http://maps.google.com/maps/api/,一直在查找,看来主要是它的问题了,找主题,我用的软件是:sublime ,我用的中文破解版,下载地址:http://pan.baidu.com/s/1jGfypWM
下载安装该软件之后打开,选择 “查找”——>“在文件中查找…”(倒数第二项)。查找内容我填写的是:”maps”.位置就是刚才下载在桌面的主题文件夹。然后点击“查找”。
20140706133717.jpg
很容易该文件该链接就出来了。其实网站中也没有使用到谷歌地图,所以我就直接把它给喀嚓了。
恩,这下感觉速度上来了。

wordpress固定链接出现404怎么办

在使用WordPress程序, 如果设置了wordpress固定链接, 那么, 在网站的链接URL中, 就会出现index.php问题, 如果不添加index.php,就会出现404错误,

下面是本人解决wordpress固定链接出现404错误的解决办法。

wordpress固定链接设置出现404错误的具体操作步骤如下:

1, 新建一个记事本文件, 写入以下代码, 并保存, 连同.txt格式重新命名为404.php;


2, 在主机服务器的主机管理控制面板中, 设置404自定义错误指向404.php;本人使用的是虚拟主机,操作步骤如图。
404-error.jpg
3, 完成以上步骤后,在WordPress的后台 – 设置(Options) – 固定链接(Permalinks)中重新设置你希望使用的永久链接形式就可以了.

/%year%/%monthnum%/%post_id%/
/%year%/%monthnum%/%postname%/

通过以上三步简单的设置, 你的Windows主机就可以和Linux主机一样, 设置固定链接时就不会再出现index.php了,解决wordpress固定链接出现404。
原文出处:http://www.27ying.com/seo_xuexi/33.html

wordpress中自动同步数据库

前些天我的博客“井底之蛙”所在的服务器召攻击了,丢失了一部分数据,这就怪自己没坚持放在SAE上,如果放在SAE就不会有这样的情况发生拉。于是坚定了自己做备份数据的念头,
虽然网上有很多能自动备份数据,如自动发送数据库的sql到邮箱,备份到空间等等各种插件,但是也不知道咋滴,一直没用成功过,于是决定自己写一个,一直都认为代码的乐趣,在于解决自己的需要。wordpress可玩性也在于此。废话不说,说下我的想法:
博客最重要的内容,当然是发表的文章,于是决定从发布文章开始入手,可以在每次发布新文章的时候,备份一下这条数据,初步有两个简单的方法:
1、把数据库导出,然后发送到邮箱以文件的形式保存。
2、把这条数据远程备份到另外一个数据库。
相对来说,远程备份到另一个数据库比较简单,因为方法1先要导出,再要发送,涉及到空间、mail。作为一只非职业码畜,只能选择较为简单的方法。
于是我用了之前创建的两个sae应用做实验,暂时把原本的数据库称为A,备份的数据库称为B吧。要把A的数据备份到B,这里就会涉及到一个传送数据的问题,我们都知道常用的传送数据就是用表单,get、post方式,我们不可能在A中写一个表单,然后action写B的地址。这里有一种方法,那就是Curl(没见过的同学自己百度哈),在A应用中触发发表新文章这个动作时,用curl 把数据post到B的数据库,这样就达到我们的目的了。

我的基本思路就是这样,下面就是敲代码了。在wordpress中,我们要用插件的形式去完成这项工作,而wp中新建插件也很简单直接在wp-content/plugins/目录下创建你要的插件文件夹,然后到文件夹里面创建php文件就好了。比如我在A应用中这样子:
020840hhp474cycqhhdqnd.jpg

下一步就是往里面敲代码了。
PHP代码

  1. /* 
  2. *@backage backupdb 
  3. * @version 1.6 
  4. */  
  5. /* 
  6. Plugin Name: backupdb//这里是插件名称 
  7. Plugin URI: http://aoxiang.me//这里是插件链接的地址,这里链接的是我的博客,井底之蛙 
  8. Description: when you publish a new post, this plugin will backed up data to anthor database that you set ;//这里是你插件的简介 
  9. Author: Luffy//author 
  10. Version: 1.0//版本 
  11. Author URI: http://aoxiang.me 
  12. */  
  13. /* 
  14. Plugin Name、Plugin URI、Description、Author、Version等等这几项建议大家都写上,不写有时候wp会不识别插件 
  15. */  
  16. //函数中传入的是发表的新文章,写入A数据库以后,生成的post_id  
  17. function backupdb($post_id)  
  18. {  
  19.     //下面我们通过这个postid,取得A数据库中的这条数据  
  20.   $post_data = get_post($post_id);  
  21.       
  22.     //由于wp中取得的数据是对象(-_-###PHP居然是个有对象的语言,为毛我等码畜无对象!!!)的形式,我习惯了用数组的形式去处理数据,所以这里我把它全部改成了数组。  
  23.   $data[‘id’] = $post_data->ID;  
  24.   $data[‘post_author’] = $post_data->post_author;  
  25.   $data[‘post_date’] = $post_data->post_date;  
  26.   $data[‘post_date_gmt’] = $post_data->post_date_gmt;  
  27.   $data[‘post_content’] = $post_data->post_content;  
  28.   $data[‘post_title’] = $post_data->post_title;  
  29.   $data[‘post_excerpt’] = $post_data->post_excerpt;  
  30.   $data[‘post_status’] = $post_data->post_status;  
  31.   $data[‘comment_status’] = $post_data->comment_status;  
  32.   $data[‘ping_status’] = $post_data->ping_status;  
  33.   $data[‘post_password’] = $post_data->post_password;  
  34.   $data[‘post_name’] = $post_data->post_name;  
  35.   $data[‘to_ping’] = $post_data->to_ping;  
  36.   $data[‘pinged’] = $post_data->pinged;  
  37.   $data[‘post_modified’] = $post_data->post_modified;  
  38.   $data[‘post_modified_gmt’] = $post_data->post_modified_gmt;  
  39.   $data[‘post_content_filtered’] = $post_data->post_content_filtered;  
  40.   $data[‘post_parent’] = $post_data->post_parent;  
  41.   $data[‘guid’] = $post_data->guid;  
  42.   $data[‘post_type’] = $post_data->post_type;  
  43.   $data[‘menu_order’] = $post_data->menu_order;  
  44.   $data[‘post_mime_type’] = $post_data->post_mime_type;  
  45.   $data[‘comment_count’] = $post_data->comment_count;  
  46.   $data[‘ancestors’] = $post_data->ancestors;  
  47.   $data[‘filter’] = $post_data->filter;  
  48.       
  49.       
  50.     //下面的URL就是我们要备份的数据库B的地址了。这里要注意index.php?有个参数backupdb,这是我设置的一个简单的密钥,用来匹配A、B两个应用。后面详解  
  51.   $url = “http://1.jdzw.sinaapp.com/index.php?backupdb=1”;  
  52.       
  53.       
  54.   $ch = curl_init(); //初始化curl  
  55.   curl_setopt($ch, CURLOPT_POST, 1);//告诉curl要使用post传值  
  56.   curl_setopt($ch, CURLOPT_URL, $url);//告诉curl对应的url地址是$URL  
  57.   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//告诉curl要传过去的数据是$data  
  58.   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //告诉curl只要传值过去就行了,不用把结果显示出来。    
  59.   curl_exec($ch);//execute  
  60. }  
  61. //add_action是wp的一个亮点,这里简单解释里面两个参数一个是触发时间,一个是执行函数,那么这个函数就易懂了,当发布新文章的时候,执行backupdb这个函数,  
  62. add_action( ‘publish_post’, ‘backupdb’ );  

发送数据搞定了,那就要搞定接收数据了,下面是我B应用中的代码,直接在wordpress/index.php最后加上这一段就好了
PHP代码

  1. //直接在index.php里面加上下面这一段就好了  
  2. if(isset($_GET[‘backupdb’]))  
  3. {  
  4.   $data = $_POST;  
  5.   $sql = “INSERT INTO wp_posts(id,post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_password,post_name,to_ping,pinged,post_modified,post_modified_gmt,post_content_filtered,post_parent,guid,post_type,menu_order,post_mime_type,comment_count) VALUES(“.$data[‘id’].“,”.$data[‘post_author’].“,'”.$data[‘post_date’].“‘,'”.$data[‘post_date_gmt’].“‘,'”.$data[‘post_content’].“‘,'”.$data[‘post_title’].“‘,'”.$data[‘post_excerpt’].“‘,'”.$data[‘post_status’].“‘,'”.$data[‘comment_status’].“‘,'”.$data[‘ping_status’].“‘,'”.$data[‘post_password’].“‘,'”.$data[‘post_name’].“‘,'”.$data[‘to_ping’].“‘,'”.$data[‘pinged’].“‘,'”.$data[‘post_modified’].“‘,'”.$data[‘ost_modified_gmt’].“‘,'”.$data[‘post_content_filtered’].“‘,'”.$data[‘post_patent’].“‘,'”.$data[‘guid’].“‘,'”.$data[‘post_type’].“‘,'”.$data[‘menu_order’].“‘,'”.$data[‘post_mime_type’].“‘,'”.$data[‘comment_count’].“‘)”;  
  6.   $wpdb->query($sql);  
  7.     
  8. }  

上面的代码大家应该显而易懂,我稍稍说一下那个密钥和add_action

1、密钥是用来匹配A和B这个应用的,如果没有这个密钥,那当任何人访问B应用的index.php的时候,都会执行后面的插入数据库的这段代码,当然,别人访问的是,是没有post的这个数据库,肯定会出错。
这个密钥是很简单的一种方法,但是不建议大家在index.php里面加入,因为index.php访问次数肯定多,每一次访问都会加上一个判断,这是影响性能的,我们可以新建一个php文件,去专门用来做备份。
密钥的方法不仅限于GET的方法,我们也可以在POST中再加入一个参数用来判断,再牛叉一点,用RC4加解密,再牛叉一点。。。。自己想吧,本码畜智商只到这里,一直都认为,代码的乐趣在于解决自己的需要,也在于自己摸索一些没玩过的东西。

2、add_action是wp中一个非常有意思的地方,它常用在我们写插件的时候,前面说了,第一个参数是触发事件,第二个参数是执行函数,想一下如果我们写的是add_action(“edit_post”,”backupdb”)、add_action(“delete_post”,”backupdb”)会发生什么呢?

在A应用后台中选择启用backupdb这个插件,
024500n0qnspr6rnfapzh6.jpg

然后在A应用中,发布新的文章,就会触发add_action(“publish_post”,”backupdb”),然后backupdb这个函数就会取得最后一条post数据,再将这条数据发送到B应用中,B应用匹配密钥是不是backupdb,如果密钥验证成功,就将$_POST中的数据,插入到B中的数据库。over
下面看我的:
005zRuCggw1eg2tq6e2y6j30sk0ea0z3.jpg

完成!
代码这个东西大同小异,在这里我是用SAE中的应用作为我的备份服务器,因为之前有把域名指向sae,但后来因为域名没有备案,sae只提供海外服务器,家里网络的原因,有时候打开sae有点慢,所以就没指向sae了,现在能够同步重要数据,随时将域名指向sae,就能继续使用了,再也不怕找到攻击拉。哈哈。

谷歌被封,wp博客字体无法加载的解决办法

Google服务在大陆全线被封不仅影响到了广大网民,也影响到了数百万使用wordpress程序的站长。WordPress是世界上最大的开源博客程序,而WordPress大部分的主题都是使用Google的在线字体方案:Google Fonts。Google服务不稳定,导致大量独立博客字体加载不出来,直接导致几十万独立博客打开速度变慢,严重时甚至导致网站打不开。

我们都知道360是一家比较奇葩的互联网公司,这次360网站卫士又出了一个奇葩的解决方案,将它提取出来,给大家使用。

修改方法如下:

打开wordpress代码中的文件wp-includes/script-loader.php文件,搜索:fonts.googleapis.com找到这行代码

  1. $open_sans_font_url = “//fonts.googleapis.com/css?family1=Open+Sans:300italic,400italic,600italic,300,400,600&amp;subset=$subsets”;

把fonts.googleapis.com替换为fonts.useso.com

修改完保存,再次刷新,大家就可以发现,自己的网站速度已经比以前快了很多,几乎瞬间就可以拿到Google字体了。原因就是本来需要从美国服务器才能拿到的google字体,现在已经遍布360全国的机房了。

注意:每次升级以后,查看一下wp-includes/script-loader.php文件是否又被改回到了googleapis。

wordpress必修-本地调试环境搭建

wordpress学习很久了,都是在虚拟主机上调试的,费流量也慢,想在本地搭建一个wp的调试环境,试了织梦的集成环境系统,结果安装主题的时候出现了问题,只有另寻他法,百度安装了好几种系统,不是步骤太复杂,就是测试没反应,最后选择了PHPnow-1.5.6,Win32 下绿色免费的 Apache + PHP + MySQL 环境套件包,简易安装、快速搭建支持虚拟主机的 PHP 环境,附带 PnCp.cmd 控制面板,可以快速配置套件,使用很方便,觉得不错!

PHPnow-1.5.6安装使用

解压后执行 Setup.cmd,根据提示进行,程序将会调用 Init.cmd 初始化。
phpnow1.jpg

成功初始化后 Init.cmd 自动改名为 Init.cm_。
phpnow2.jpg

如有必要,可将其改名为 Init.cmd 重新初始化。重新初始化不会丢失网站数据,仅仅是配置复位。

PnCp.cmd 是 PHPnow 控制面板(Control Panel)。大部分功能都在上面实现。
phpnow3.jpg

PnCmds 目录下有一些常用的 cmd 脚本,控制程序的运行。你可以建立快捷方式到桌面或其他位置。
phpnow4.jpg

包含组件

Apache-2.0.63
Apache-2.2.16
MySQL-5.0.90
MySQL-5.1.50

PHP-5.2.14
Zend Optimizer-3.3.3
phpMyAdmin-3.3.7
* eAccelerator 0.9.6-1
* 默认没有启用。执行 PnCp.cmd 选 3 启用。

默认参数:

Apache 默认已支持 rewrite, 请使用 .htaccess 文件配置
( 更多信息请看 http://phpnow.org/go.php?id=1008 )
php.ini 位置 = php-5.2.x-Win32/php-apache2handler.ini

默认 php 扩展

php_curl.dll
php_gd2.dll
php_mbstring.dll
php_mcrypt.dll
php_mhash.dll
php_mysql.dll
php_pdo.dll
php_pdo_mysql.dll
php_sockets.dll
php_xmlrpc.dll
php_zip.dll

下载地址:PHPnow-1.5.6下载

如何给WordPress数据库减肥优化

用习惯WordPress的人都知道,系统有个自动保存和修订版本功能,国人就是没有这种自动保存的习惯,觉得很是多于,就好比开始拼命的抵制outlook,对foxmail确是情有独钟,至今还有人对WordPress的自动保存和修订版本功能感到无语。

当然有代码可以去除这个功能,不过本站强烈建议保留该功能,你会发现它有时候会是多么的有用。

以下是教你如何来清除数据库的冗余数据:

1、进入控制面板的phpMyAdmin管理界面,进入自己的数据库;

2、 点击上面的 SQL,在查询界面输入如下命令:

delete FROM `wp_posts` WHERE post_status='inherit';
delete FROM `wp_posts` WHERE post_status='auto-draft';

点击右下角的[运行]即可。

3、运行以后,在wp_posts 上打勾,在[选中项:]中选择‘优化表’,然后执行。就可以了

如果你对操作数据库没什么信心,那么还有一种方法可以实现,利用wp-cleaner这个插件动动鼠标就可以实现上述的清理数据库功能,非常的方便,关于wp-cleaner插件,本站也在使用,到目前为止还没有发现任何误删或者和系统不兼容的问题,你只需要过一段时间使用wp-cleaner清理一下就可以了,简简单单数据库就保持了瘦身。

WordPress特色图片使用timthumb

找到正在使用的主题的相关文件,找到:if (has_post_thumbnail())相关然后用以下代码调用

$post_thumbnail_url = get_post_thumbnail_url($post->ID);

在function.php中增加函数

//获取 WordPress 特色图片地址

function get_post_thumbnail_url($post_id){

$post_id = ( null === $post_id ) ? get_the_ID() : $post_id;

$thumbnail_id = get_post_thumbnail_id($post_id);

if($thumbnail_id ){

$thumb = wp_get_attachment_image_src($thumbnail_id, 'thumbnail');

return $thumb[0];

}else{

return false;

}

}

wordpress屏蔽google字体加载

最近google貌似被和谐了,国内好多wordpress的站都卡在了google字体那里(fonts.goo…)进不去了,有的要等好久,下面就教大家一个方法来屏蔽google字体。

在你主题的文件中加上下面函数

//禁用Open Sans
class Disable_Google_Fonts {
public function __construct() {
add_filter( 'gettext_with_context', array( $this, 'disable_open_sans' ), 888, 4 );
}
public function disable_open_sans( $translations, $text, $context, $domain ) {
if ( 'Open Sans font: on or off' == $context && 'on' == $text ) {
$translations = 'off';
}
return $translations;
}
}
$disable_google_fonts = new Disable_Google_Fonts;

刷新看看是不是不用再等待了。

SAE上的wordpress rewrite规则

如果你有一个SAE的账号,那么可以在上面搭建一个wordpress博客,搭建过程很简单。

wp4sae下载和安装说明 http://code.google.com/p/wp4sae/

安装之后有个问题,SAE是nigix的而worpress的url重写规则是基于apache的,所以直接把.htaccess放在根目录是不起作用的。

所以我们需要一个可以在SAE上的规则使得wordpress可以正常运行。

规则如下:


name: seo123
version: 2
handle:
- rewrite: if(!is_file()&&!is_dir()) goto "index.php?%{QUERY_STRING}"

说明:

seo123是SAE项目的名字

version是活动版本

这两项都是SAE自己生产的,不用改动,关键是第三项:

- rewrite: if(!is_file()&&!is_dir()) goto "index.php?%{QUERY_STRING}"

这个就是对应的规则,注意这一行的开头必须有两个空格