警告:此页面包含危险内容!
www.climber01.com 包含xxxxxxxx.com 中的内容,后一个网站是已知分发恶意软件的网站。如果您访问该网站,您的计算机可能会中毒。
Google 发现如果您继续操作,您的计算机上可能会安装恶意软件。如果您以前访问过此网站或者您信任此网站,则此网站可能刚刚受到黑客攻击。您不应继续操作,建议您明天重试或者访问其他网站。
我们已通知 xxxxxxxx.com 在网站上发现了恶意软件。有关在 xxxxxxxx.com 上发现的问题的更多信息,请访问 Google 安全浏览诊断页面。如果您知道访问此网站可能会损害您的计算机,仍然继续。如果您在某些网站上看见此警告,请向 Google 发送有关这些网站的其他数据,以帮助我们更好地检测恶意软件。我们会根据“安全浏览”隐私权政策处理这些数据。

 

前一阶段访问我博客的朋友应该会看到谷歌浏览器提示的以上内容。然后拖拉了好几天终于自己看不下去了,寻思着解决它。

装FTP,下网站文档,但奇怪的是全部文档里面根本就不到“xxxxxxxx.com”的关键字,然后覆盖原服务器文档重新安装wordpress后也没有解决,最后全部清空了网站根目录再重装仍无效。

最后只好百度、谷歌了。网络上流行的解决方案是:

1.重新安装wordpress,这是去除对wordpress核心文件(wp-config.php、wp-settings.php、主题的header.php
wordpress的wp-include的js)的修改
2.仔细检查主题目录,删除所有可疑文件
3.检查主题目录下的cache文件夹,最好全部清空,然后上传一个干净的index.html
4.检查wp-config.php,确保末尾没有恶意代码,一般恶意代码会加到1000多行,让你不注意就会忽略。
5. 检查你的服务器上是否有timthum.php文件,也可能叫thumb.php,如果有,请升级到最新版本,并禁用读取外部图片的功能。
6. 最好更新wordpress的数据库用户名密码,更新wordpress后台密码。
7. 都弄好了别忘了去google webmaster tool申请重新审核网站,将网站从blackllist中移除。

详情请看,http://wordpress.org.cn/thread-100870-1-1.html

这个我觉得都会无效(基本都自己试过了),最后想到可能是数据库被注入了“xxxxxxxx.com”的内容,从而被谷歌抓取到了 。

幸福的是刚好我发现博客的一个文章内的图片链接是含有“xxxxxxxx.com”这个关键字的。然后果断把这个图片链接给删除了,更新文章。重新访问,就没有被谷歌浏览器提醒威胁了。

如果没有这么幸运,估计只有在MYSQL数据库里面用SQL语句来解决问题了。

SQL语句应该是 update database set “xxxxxxxx.com”=”"。万能的大仙,我已经一年多没有碰SQL了,应该木有记错吧。记错了要提醒我啊。

最后的最后,感谢我的空间商,安信网络http://www.anxinnet.com/index.html 。嘿嘿,除了耐心帮解决这个问题外,还帮我还原了我不小心丢掉的图片。嘿嘿,唯一能做的就是赶紧续费。

 

参考:http://kan.willin.org/?p=1282

参考:http://wange.im/readerwall-on-sidebar-without-plugins.html

谢谢两位大仙。

本人右侧实现的代码如下:

    get_results("SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH ) AND user_id='0' AND comment_author != 'climber' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author ORDER BY cnt DESC LIMIT 15"); foreach ($counts as $count) { $c_url = $count->comment_author_url; if ($c_url == '') $c_url = 'http://climber01.com/'; $mostactive .= '
  • ' . ''.get_avatar($count->comment_author_email,35).'
  • '; } echo $mostactive; ?>

wp_list_comments()是WP 评论模板用于调出评论列表的函数,函数原型如下:

函数默认参数如下:

 null,
    'max_depth'         => ,
    'style'             => 'ul',
    'callback'          => null,
    'end-callback'      => null,
    'type'              => 'all',
    'page'              => ,
    'per_page'          => ,
    'avatar_size'       => 32,
    'reverse_top_level' => null,
    'reverse_children'  =>  );
?>

其中 max_depth, per_page, 和 reverse_top_level 可以在”控制面板 –> 讨论”控制,但如果主题下面有这三个参数的设置,则控制面板的设置会失效。

各个参数大概解释如下:

avatar_size : 控制 avatar 头像的大小,以像素为单位,默认为32px . http://gravatar.com/ 支持 1- 512之间的像素值。

style : 选择评论列表的容器,可选 ‘div’、’ol’、’ul’,默认为 ‘ul’ 。使用如:

comments_template()是阅读页面 single.php里面调用 评论模板的函数。

函数原型为: comments_template( $file, $separate_comments )

其中$file是评论模板路径 ,默认为'/comments.php' ,$separate_comments是布尔值,默认为'false',按其官网解释“Whether to separate the comments by comment type.”,应该其含义为“是否按类型将评论分类”。

如,若想调用一个当前主题下已经制作好的特殊的评论模板文件,如comments-specail.php,则使用comments_template('/comments-specail.php' ) 即可实现目的。

comments_template()这个函数在 使用上和get_sidebar(),get_footer(),get_header(),get_sidebar()等模板调用函数还是有区别的。如,get_sidebar()调用当前主题下的特殊边栏模板,如siderbar-special.php,只需要使用get_sidebar(‘special’) 即可。

发现了不,get_sidebar()这类函数的参数是模板文件 命名  中”-“之后的部分,而comments_template()函数参数是文件地址。

至于,如何改变评论模板的结构,就涉及到另外一个函数,wp_list_comments(),就留明天写吧。

文章参考:http://codex.wordpress.org/Function_Reference/comments_template

——————–流水下划线———-慎入———–

PS:明天朋友W要从天津来武汉,灰常乐意让他请偶们去五星级酒店,可是灰常失望的敲诈失败,尽管这样,还是灰常期待SGG0605的小聚啊。终于又可以看到这群挫人了。希望这几天有空。

PS2:我在这群人眼里更挫。

PS3:29号转正了,据说要一篇半年总结,三篇读书笔记,可是人力资源部的人怎么不给我打电话,莫非我太优秀免了(YY中……)。哪位神人代我写了吧,我真愿意请客。

也许你早就发现了,自己wordpress博客发表文章的时候前后两篇的ID居然不连续,尤其使用固定链接像“http://www.kokia.name/archives/188”我这种模式的,会很容易发现,通常前后两篇文章的ID会差个2到3的,虽然说文章ID不连续并不影响什么,但或多或少的对博客作者心情会有点影响,我刚开始就觉得很纳闷,看着就很不爽。

后来发现,原来WordPress2.6及其以后的版本添加了一个Post Revisions的功能,该功能会保存同一篇博客日志的不同版本,同样的内容多次占用数据库,因此导致了文章ID的不连续,而且浪费数据库资源。解决问题的办法就是禁止这个功能。

只要你把以下介绍的三个处理方法都用上,保证ID就可以连续了。

首先,修改wp-config.php文件,在文件中增加一行define(’WP_POST_REVISIONS’, false); 。

其次,使用“禁用WordPress自动保存的插件——Disable Revisions”,Disable Revisions可以禁止WordPress2.6以后的Post Revisions问题从而不产生多余的文章版本。

Disable Revisions下载地址:http://wordpress.org/extend/plugins/disable-revisions/

最后,对于以前已经产生的数据库中的垃圾,我们用WP Cleaner 这个插件来搞定它,WP Cleaner可以起到搜索和批量删除不再需要的wordpress文 章修订版或草稿,减小数据库的空间的作用。该插件可以在你需要使用的时候开启,使用完后禁用,如果你一开始就已经使用上面的Disable Revisions插件,则可以不用安装该插件了。如果不是的话,装上这个插件,你就会发现有很多莫名其妙的文章在你的数据库里,都可以一并删除了,当 然,安全起见,删除前建议先备份mysql数据库。

WP Cleaner下载地址:http://www.jiangmiao.org/blog/c/wpcleaner

注明:本文为转载,原地址为http://www.wopus.org/blog-article/technology/1400.html ,特感谢原作者。若转载请说明原文地址。

WP-RecentComments是一个比较常用的WordPress插件,其作用“Show the recent comments in your WordPress sidebar.”,意即在旁边显示WP博客最新的评论,但默认是显示作者本人的评论(回复)的。这是我折腾WP-RecentComment的起始原因。

步骤如下:打开WP后台—-》插件(左手导航栏)—-》编辑—-》列表下拉菜单中选择WP-RecentComments,选“选择”按钮—-》选择wp-recentcomments/core.php文件 —-》在“// 是否显示管理员用户的 SQL 条件”处将其if判断条件改为 “true”—-》选择“更新文件”按钮—》返回前台刷新,完成折腾

步骤截图如下:

wp-recentcomments

wp-recentcomments-2

本人所用WP-RecentComments版本为1.8,其他版本未测试,也许有不同的地方,此文不一定有效

平常写博客的时候,偶尔会因为标题过长撑破容器的高度,进而而破坏了整体结构的显示样式、影响美观。按理来说,标题的显示可以通过CSS控制容器的overflow:hidden属性实现。但今天我尝试没有成功,所以只有从代码角度截取标题,从而控制其显示样式。Google而来的方法如下:

首先找到你当前所用主题的functions.php,在php代码中加入如下函数代码。

function TruncateTitle($max_length)
{
$title_str = get_the_title();
if (mb_strlen($title_str,’utf-8′) > $max_length )
{
$title_str = mb_substr($title_str,0,$max_length,’utf-8′).”…”;
}
return $title_str;
}

然后在你需要控制标题长度的地方加入如下代码。

<?php
//The Query
query_posts('posts_per_page=10&orderby=postbypost');
//The Loop
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<li><a href=<?php the_permalink() ?> class=title title='<?php echo get_the_title();?>'>
<?php echo TruncateTitle(36);?></a></li>
<?php
  endwhile; else:
?><li>No Article</li>
<?php
endif;
wp_reset_query();//Reset Query ?>

WordPress中最简单调用标题的方法是,

<?php get_archives('postbypost', 10); ?> (显示10篇最新更新文章)
或者
 <?php wp_get_archives('type=postbypost&limit=20&format=custom'); ?>。

后面这个代码显示你博客中最新的20篇文章,其中format=custom这里主要用来自定义这份文章列表的显示样式。具体的参数和使用方法你可以参考官方的使用说明- wp_get_archvies

但其控制样式均不如query_posts()函数自由强大。因为这两个函数默认生成的html标签是<li>,其标题长度无法人工控制,所以要控制标题长度,必须使用query_posts()。其使用方法参考:query_posts()

本文参考如下网址,特此感谢:

http://paranimage.com/mastering-wordpress-themes-5/

http://www.99is.com/website/archives/247.html

辛辛苦苦自己做完了主题,在检查的时候却发现Tags出现了问题,字母的可以访问,而中文的不行。本以为是我的主题里有代码没写全,但是检查无果。www.google.cn 了一下发现WordPress的中文支持有问题,特别是在使用Permalink的时候。我也想原创文章,可是在这种时候,只能是留个记号,以便以后查询了。
本文将分析其中的原因和网上流传的多种解决方案,并给出一个具体的解决结论。
这个问题主要表现为,在默认情况下,Wordpress对于形如这样的链接(链接1):

www.example.com/tag/中文

不能正常访问,会产生404或500错误,或者其他的错误。
而对于这样的链接(链接2):

www.example.com/?tag=中文

WordPress就能够正确解析。
原因:这是URL编码问题造成的。对于上面的链接1,这是一个PathInfo,对于链接2,这是一个QueryString。事实证明,对于UTF-8的页面,IE和FF都会正确发送PathInfo和QueryString(而不像有些文章中说的,他们在不同的设置下会有错误的反应),但服务器端,IIS会将PathInfo转换成GBK编码从而造成错误,于是Windows下的此类问题只需要转回来就行了;但是Linux下,Apache不支持中文PathInfo,要么对Apache进行改造,要么只能像我一样,Linux主机无法使用中文permalink。于是,我们只能寻找绕路的方法。

解决方案分析:
一、转换编码
原理是,IIS会将PathInfo中的UTF-8转换成GBK,而QueryString中就不会转换,故而为了使用Permalink,采用以下方法:
打开wp-includes/classes.php文件,

if ( isset($_SERVER['PATH_INFO']) )
  $pathinfo = $_SERVER['PATH_INFO'];
else
  $pathinfo = '';
$pathinfo_array = explode('?', $pathinfo);
$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
$req_uri = $_SERVER['REQUEST_URI'];

改为

if ( isset($_SERVER['PATH_INFO']) )
  $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
else
  $pathinfo = '';
$pathinfo_array = explode('?', $pathinfo);
$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");

局限:只对Windows主机、且必须是Windows下的IIS主机有效。

二、修改wp-includes/rewrite.php
这是网上最常见的方法,原理是,让WordPress在对其他内容使用Permalink的时候,对tag不使用,而使用链接2的QueryString模式发送中文编码:

 function get_tag_permastruct() {
if (isset($this->tag_structure)) {
return $this->tag_structure;
}
if (empty($this->permalink_structure)) { //-----this line need change------
$this->tag_structure = '';
return false;
}

把第5行改为

if (!empty($this->permalink_structure)) {

局限:没有起到Permalink的“漂亮”作用,如果不能自己修改WP的文件就没办法了。

三、修改tag base
原理同上,只要让WordPress在打开了Permalink功能后继续对tag不理不问就行了。那么,欺骗WordPress,让它用链接2的格式来显示Permalink,可行么?可行,因为WordPress可以自定义Permalink的形式:
在WordPress的 Settings – Permalinks – Tag base 中填上
/?tag=
注意””不能少,引用原文中的写法不对。另外要注意每次输入””,WP都会再次转义为”\”,所以每次点提交都会把””翻一倍,点两次就是”\\”,所以不要多点,一次就对了。
这个方法的结果是使得链接变成这个样子

www.example.com/?tag=/中文/

多出来的斜杠对于服务器丝毫没有影响,还是被视为QueryString,效果同上。
局限是链接变得更加不好看了,更为致命的是插件生成的Sitemap中,tag链接会变成错误的形式,如果你很在乎Sitemap,请不要使用这个方法,除非你真的无法修改自己的rewrite.php文件。

但是当你使用WP-SuperCache或者类似的缓存插件时,它会加入自己的rewrite规则,所有请求先由自己判断,不在缓存中或者不符合缓存规则才交由WordPress处理。但问题在于,它不支持中文URL的解析,哪怕是QueryString也不行。于是我们必须绕过它。
这是WP-SuperCache在.htaccess文件里所添加的rewrite规则

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*s=.*
RewriteCond %{QUERY_STRING} !.*p=.*
RewriteCond %{QUERY_STRING} !.*attachment_id=.*
RewriteCond %{QUERY_STRING} !.*wp-subscription-manager=.*
RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*s=.*
RewriteCond %{QUERY_STRING} !.*p=.*
RewriteCond %{QUERY_STRING} !.*wp-subscription-manager=.*
RewriteCond %{QUERY_STRING} !.*attachment_id=.*
RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]

我们要做的就是不让它去判断中文tag链接,在两个 RewriteCond %{REQUEST_METHOD} !=POST 后面分别加入这样一句:

RewriteCond %{QUERY_STRING} !.*tag=.*

含义是如果QueryString中含有tag字样,请不要解析(交给下一条规则,一般来说就是WordPress的index.php了)。

结论:
Windows+IIS主机下,通过方案一可以完美解决中文tag问题
Linux+Apache主机下,不能使用中文Permalink,除非修改Apache,否则只有用方案二和方案三绕行。
方案二是较为推荐的方法,但是搭配WP-SuperCache使用的时候,需要自己在.htaccess文件中加入一条不处理tag链接的规则。

(原文地址:http://www.ctusky.com/c2009/02/46_chinese-tags-solution-wordpress-error.html