php技术博客
让天下没有搞不定的bug~

Akismet下面的key先前被验证过,不过无法连接到Akismet服务器。请检查您的服务器配置

zone阅读(736)

Akismet下面的key先前被验证过,不过无法连接到Akismet服务器。请检查您的服务器配置

昨天把 Akismet 插件升级到了最新版本2.5.0,升级后发现提示:下面的 key 先前被验证过,不过无法连接到 Akismet 服务器。插件出现这个问题直接导致的后果是,博客中所有的评论都需要手工通过审核才会显示在页面上,就连自己给网友的回复也在审核之列。

折腾了半天也没有搞明白是什么原因,最终园子的解决方法是,删除了最新版本的 Akismet 2.5.0,重新安装了2.4.0版本。然后激活插件后一切正常。

用老版本插件可以看到 Key 有效的提示,新版本中的错误提示信息为:下面的 key 先前被验证过,不过无法连接到 Akismet 服务器。请检查您的服务器配置。

这是 Akismet 插件升级后和升级前的信息提示截图对比:

Akismet 插件升级后和升级前的信息提示截图对比Akismet 插件升级后和升级前的信息提示截图对比

用回老插件后测试了下博客上的评论,发现已经不再需要审核了。这个很纠结的问题,不知道朋友们有没有遇到。如果大家有更好的解决方案,欢迎留言给我。

Akismet 2.4.0版本下载链接

 

  技术分享,技术交流,小涛与您共同成长

 

WordPress如何去掉评论中链接

zone阅读(488)

WordPress 去掉评论中链接的方法

俗话说道高一尺,魔高一丈,既然做了一名 WordPress 独立博客的博主,就要有与垃圾评论斗争到底的信心与决心,但是作为一名打不走,骂不离,死皮赖脸的 Spammer,就要做好与各位博主们周旋的准备。我见的最多的垃圾评论就是在留言中 Ctrl+C、Ctrl+V 千篇一律的话,什么“过来踩踩”、“博主加油”,然后撒下一坨链接就闪人了。这是最没有职业素养的 Spammer(……此处省略三千字对垃圾评论的无限鄙视……)

要防止垃圾评论对 WordPress 本身权重的影响,Wordpress 本身的 nofollow 标签肯定是不够的,所以我还用了 WordPress 评论链接重定向跳转,如果你觉得这还不够彻底的话,可以用这个方法,索性把 WordPress 评论中包括链接的 a 标签过滤掉,只剩下一个无法点击的链接文本。

方法和过滤并替换 WordPress 留言指定字符是差不多的,也是用的钩子,外加一个 PHP 的正则表达式,把链接过滤出来,把以下代码复制到 WordPress 主题文件夹的 functions.php 中就可以了:

add_filter(‘comment_text’, ‘no_url_text’, 10);
function no_url_text($text = ”){
$text = preg_replace(“/<a[^>]*href=[^>]*>|<\/[^a]*a[^>]*>/i”,””,$text);
echo $text;
}

童鞋们不用在我这里测试了,因为我没有用上,这里是纯解说,无实践。

另外,如果你觉得这还不够彻底,那还有一个更绝的!就是把所有评论者的链接都去掉,不过这样的话在干掉 Spammer 的同时也会干掉所有无辜的博友,请慎用啊。去掉 WordPress 评论者的链接,看到很多参考方法都说改 WordPress 的源文件,其实我不建议那么干,一方面这个方法太原始,咱要玩高级的;另一方面,以后 WordPress 升级就会覆盖掉,所以我们还是在主题文件的 functions.php 中添加钩子比较好:

add_filter(‘get_comment_author_link’, ‘no_url_author’, 20);
function no_url_author($text = ”){
$text = preg_replace(“/<a[^>]*href=[^>]*>|<\/[^a]*a[^>]*>/i”,””,$text);
echo $text;
}

这下世界就清静了,不过做的太狠,你的博客也会很清静哟,三思而行吧。

技术分享,技术交流,小涛与您共同成长

完美解决WordPress在Nginx下打开后台页面出现404页面

zone阅读(562)

趁着前几天系统出问题,重装系统,也顺带把Apache也换成了Nginx

期间出了不少问题,记录一下

 

错误的原因

 

问题的原因是正常后台url地址应该是 /wp-admin/ 这种格式的,但是由于Nginx的原因是 /wp-admin 这种格式的

也就导致了错误。

Nginx认为只有后面有 / 的情况下才会认为是一个目录

 

解决办法

在 wp-admin/admin-header.php 中加入一段代码

<base href=”/wp-admin/” />

 

加载到<?php 的上方就可以了

然后刷新,问题已经解决了

    技术分享,技术交流,小涛与您共同成长

Contact Form 7发送邮件提示这个错误:Failed to send your message. Please try later or contact the

zone阅读(20143)

Contact Form 7发送邮件提示这个错误:Failed to send your message. Please try later or contact the…………

Contact Form 7 是一个不错的表单生成工具,可以让我们方便的在博客之中生成各种需要的表单应用,譬如在做留言或者联系人的时候尤其好用。但我在正确配置了插件和博客之后测试Contant Form 7生成的表单却总是出现发布邮件失败的错误,截图如下:

image

Failed to send your message. Please try later or contact the administrator by another method.

于是网上搜索了对这个问题的处理,发现很多人是因为博客主机自身不支持发送邮件并且没有安装第三方的SWTP邮件发送插件造成的,我不属于这种情况,因为我安装配置好的WP-Mail-SWTP发送测试邮件是成功的,并且Wordpress正常的评论邮件通知功能也都正常,这说明第三方的邮件发送插件运行正常。那剩下的就只有contact form 7插件的问题了。网上并没有多少介绍这个情况的文章,于是决定自己处理一下。

发送邮件不成功根据之前的经验一般都是数据格式的问题,于是直接找插件代码。之前WP玩儿的并不多,并不熟悉插件的代码结构。不过翻了下之后还是很容易的找到了插件发送邮件模块的代码文件,如图(选中的文件):

image

contact-form-7/includes/classes.php

找到文件,修改调试了一下,最后发现是插件在调用wp_mail()函数时传入的第四个参数$headers结构有问题导致的发送邮件失败。很深入的原因我没有再去查找,猜测可能是$headers变量之中的邮件发送人字符串结构有问题造成的,当然也有可能是因为SMTP服务器自身的不同验证造成的(这种情况我就遇到过)。有时间会去再深入研究一下,不过就这个问题,修复方法很简单。只需要剔除$headers之中有From的那一句就可以了,因为邮件函数自身就已经包含有$sender的信息,因此其实对wp_mail()这个函数而已,整个$headers本身都是可选的,不过为了防止产生其他的意外,这里我还只是用一句空字符串替代了源代码,修改如图:

image

Ps:不要忘记点击”更新文件”进行保存

修改之后插件发送邮件正常,效果如图:

image
发送成功

image
接收到邮件

最后总结一下

Content Form 7插件发送邮件失败常见两原因:

  1. 空间服务器不支持邮件函数
    解决:安装第三方邮件插件(例如WP-Mail-SMTP )来发送邮件。
  2. 插件或者SMTP服务商出现问题,这往往都是一丁点儿的小毛病引起的。
    解决:可以参照本文思路修改下相关内容试下。

另外附录我所使用的环境

  • 香港空间,不提供邮件服务;
  • 网易163的SMTP邮件服务;
  • Contact Form 7版本3.1;
  • WordPress版本3.3.1中文;

One more thing……

如果你遇到相似的问题或者有更好的想法想要探讨,欢迎在下面留言!

    技术分享,技术交流,小涛与您共同成长

wordpress如何获取当前登录者信息

zone阅读(573)

wordpress如何获取当前登录者信息

虽然说本文应该是wordpress晋级教程,但是wordpress菜鸟也可以观看一下,按照教程的步骤也能实行,O(∩_∩)O~

先说说我们的目的。

我们的目的就是欢迎当前的登录用户啦,当然这仅仅是最简单的目的,更深层次的目的是根据当前登录用户控制用户的行为,比如你想让当前用户能看什么,不能看什么,也就说控制用户的权限。当然这个就超出了本文的范围了,本文仅仅是教你如何获取当前登录用户信息

 

1)使用函数 get_currentuserinfo();
此函数将当前登录用户信息赋给全局变量$current_user以及一些单独的用户信息全局变量例如$display_name, $user_email等。 代码如下:

<?php global $current_user, $display_name , $user_email;

get_currentuserinfo();

//全局变量$current_user

echo ‘Username: ‘ . $current_user->user_login . “\n”;

echo ‘User email: ‘ . $current_user->user_email . “\n”;

echo ‘User first name: ‘ . $current_user->user_firstname . “\n”;

echo ‘User last name: ‘ . $current_user->user_lastname . “\n”;

echo ‘User display name: ‘ . $current_user->display_name . “\n”;

echo ‘User ID: ‘ . $current_user->ID . “\n”;

//单独的全局变量

echo $display_name . “‘s email address is: ” . $user_email;

?>

2)使用函数 wp_get_current_user()
此函数必须将返回值赋给一个数组变量,代码如下:

<?php
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) {
// Not logged in.
} else {
// Logged in.
}
?>
 <?php
    wp_get_current_user();
    /**
     * @example Safe usage: $current_user = wp_get_current_user();
     * if ( !($current_user instanceof WP_User) )
     *     return;
     */
    echo 'Username: ' . $current_user->user_login . '<br />';
    echo 'User email: ' . $current_user->user_email . '<br />';
    echo 'User first name: ' . $current_user->user_firstname . '<br />';
    echo 'User last name: ' . $current_user->user_lastname . '<br />';
    echo 'User display name: ' . $current_user->display_name . '<br />';
    echo 'User ID: ' . $current_user->ID . '<br />';
?>

ok,上述任一一个代码放到wordpress的任何一个页面模板中都能生效。

    技术分享,技术交流,小涛与您共同成长