Tagged: wordpress

wordpress发送邮件内置函数

主机迁移到了国外,服务商告诉我这机器是封了mail函数的!!所以内置的mail()是用不了了!!

那就改用SMTP呗~

php使用PHPMailer类发送邮件,必须支持 fsockopen 函数


其实wordpress已经内置了phpmailer_init这个函数,根本就不用去装插件了~~

// smtp
function mail_smtp($phpmailer){
	$phpmailer->IsSMTP();
	$phpmailer->SMTPAuth = true; 		// 启用SMTPAuth服务
	$phpmailer->SMTPDebug  = 1; 		// 启用SMTP调试功能 1 = errors and messages , 2 = messages only
	$phpmailer->Port = 465; 		// SMTP端口,按照对应的协议填写
	$phpmailer->SMTPSecure = 'ssl'; 	// Choose SSL or TLS, if necessary for your server
	$phpmailer->Host = 'smtp.qq.com'; 	//邮箱的SMTP服务器地址
	$phpmailer->Username = 'no-rely@bcsytv.com'; 	//邮箱账号
	$phpmailer->Password = 'kjajadjdajdaklakdakj'; 	//邮箱密码
	$phpmailer->From = 'no-rely@bcsytv.com';//显示邮箱地址
	$phpmailer->FromName = 'Jalena Blog';
}
add_action('phpmailer_init','mail_smtp');

但是,使用如此配置还是无法发送邮件,一直无法连接到smtp服务器,使用telnet smtp.gmail.com 465命令,一直返回超时,遂与主机服务商联系,原来是他们默认拒绝来自vps发出的smtp请求!

服务商打开了限制,再测试

[root@MyServer ~]# telnet smtp.qq.com 465
Trying 14.17.57.241...
Connected to smtp.qq.com.
Escape character is '^]'.
Connection closed by foreign host.
 
# 连接成功!

纯代码实现全https加速wordpress

本站是放在国外的,访问经常在界面加载的时候卡住。相当的不淡定。。

上次听朋友说七牛貌似支持这样的内容存储。那么今天就来折腾它吧。

首先当然是注册七牛的帐号。这个东西百度一大堆,这里就不再来说了!

下面就来说说我的操作步骤吧

当然首先是注册 七牛账户 <- 点这里

这里需要用到的工具:

Qshell工具及使用文档

首先备份博客文件到本地(这一步其实可以不做,七牛设置好以后会自动去拉取源站点的资源)

tar zcvf blog.tar.gz /home/wwwroot/blog --exclude=Upfiles --exclude=wp-admin --exclude=*.jpg --exclude=*.php --exclude=*.html --exclude=*.txt

Read more

wordpres 实时提交百度

// WordPress发布文章主动推送到百度
if(!function_exists('Baidu_Submit')){
    function Baidu_Submit($post_ID) {
        $WEB_TOKEN  = 'wg257B4A4upzieeu';  //百度主动推送的token值
        $WEB_DOMAIN = get_option('home');
        //已成功推送的文章不再推送
        if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
        $url = get_permalink($post_ID);
        $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.$WEB_TOKEN;
        $request = new WP_Http;
        $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
        $result = json_decode($result['body'],true);
        //如果推送成功则在文章新增自定义栏目Baidusubmit,值为1
        if (array_key_exists('success',$result)) {
            add_post_meta($post_ID, 'Baidusubmit', 1, true);
        }
    }
    add_action('publish_post', 'Baidu_Submit', 0);
}

代码来自:http://zhangge.net/5041.html

WordPress 更换域名

说起来这事也真是自己找的,昨天闲来无事把nginx开启了SSL和SPDY,随之也在数据库内把url替换了,但是当时没有关闭Memcached这个缓存,所以替换后就无效果,随之一通折腾。结果网站文章就各种不显示了!!所以就只好把数据回档到了4月份~

现在就来说说这个wordpress的更换域名吧~

更换域名最直接了当的方式当然莫过于使用PhpmyAdmin了,直接执行Mysql的UPDATE语句也就分分钟的事情,这里就有必要来解释一下这个UPDATE语句了。

Update 语句:
Update 语句用于修改表中的数据。

语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

当然纯粹使用UPDATE语句只是起到了更换对应列所有值的效果,这里的替换URL只是需要替换这个列里面仅有的一部分值而已,因此还得结合replace来使用,这样我们得到的语句就应该是这样。

UPDATE 表名称 SET 列名称 = replace(列名称, '需要替换的值', '替换后的值');

到此已经基本明确了我们应该怎样操作了~当然开始之前我们还应该了解Wordpress它的各个表说储存的东西是什么~

  1. 表wp_posts里面的post_content (文章内容)
  2. 表wp_options里面的option_value (网址,这个替换就可以达到全站网站替换)
  3. 表wp_posts里面的pinged (ping内容)
  4. 表wp_posts里面的guid (WordPress默认链接结构)
  5. 表wp_comments里面的comment_author_url (留言作者URL地址 )

Read more

Nginx 轻松屏蔽恶意密码猜测

密码猜测

密码猜测

相信很多人用wordpress都有这样的情况,如果你的密码不够强度,被人这样天天猜,迟早要被破。

当然wordpress是不会主动通知你的,我们可以在主题的Function.php文件内加入如下代码来实现这个功能(前提是你的php要配置发信模块)

当然这个功能只是起到了提示作用,最终如何限制访问来源还是需要你自己配置的。

你可以使用nginx的ua判断,或者ip判断等等信息来确认访问者身份后返回正确的信息。

/*****************************************************
函数名称:wp_login_failed_notify v1.0 by DH.huahua.
函数作用:有错误登录wp后台就会email通知博主
******************************************************/
function wp_login_failed_notify(){
		date_default_timezone_set('PRC');
		$admin_email = get_bloginfo ('admin_email');
		$to = $admin_email;
		$subject = '你的博客空间登录错误警告';
		$message = '<p>你好!你的博客空间(' . get_option("blogname") . ')有登录错误!' .
		'<p>请确定是您自己的登录失误,以防别人攻击!登录信息如下:' .
		'<p>登录名:' . $_POST['log'] . '<p>' .
		'<p>登录密码:' . $_POST['pwd'] . '<p>' .
		'<p>登录时间:' . date("Y-m-d H:i:s") . '<p>' .
		'<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>';
		$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
		$from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
		$headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
		wp_mail( $to, $subject, $message, $headers );
		}
add_action('wp_login_failed', 'wp_login_failed_notify');

Read more

WordPress 增加Html5标签支持

html5越来越火了,但是老的浏览器对新的html5标签的支持那简直惨不忍睹。今天突然在朋友的电脑上用ie8访问博客发现,里面的视频部分原来无法显示出来,查资料才发现是ie1-9都不支持video标签的缘故。很多都提供了支持的方法,比如javascript创建标签,引用谷歌的支持库。我就选择的引用谷歌的支持库。贴上代码。

// html5支持
add_action('wp_head', 'add_ie_html5_shim');
function add_ie_html5_shim () {
    if(preg_match('/(?i)msie [1-9]/',$_SERVER['HTTP_USER_AGENT'])){
        wp_register_script ('html5shim', 'http://html5shim.googlecode.com/svn/trunk/html5.js', '1.0.1', true );
        wp_enqueue_script ('html5shim');
        }
}

直接将代码应用至<?php内即可。