广陵散 `s 博客 » WordPress http://ownlinux.info/blog Fri, 20 Nov 2009 00:17:01 +0000 http://wordpress.org/?v=2.9.1 en hourly 1 用jQuery实现Google Wave样式的Wordpress评论(一) http://ownlinux.info/blog/?p=794 http://ownlinux.info/blog/?p=794#comments Tue, 17 Nov 2009 14:14:06 +0000 mickeywaley http://ownlinux.info/blog/?p=794 转:http://doublechou.us/wordpress-google-wave-style-comment-with-jquery-part-1/

Google Wave已经内测好长时间了,@lookon大叔的提名接力似乎也排到了七八千咯。苏有幸在一个月前得到@Cattyhouse叔叔的邀请一枚,算是赶在第二梯队的尾巴上体验了一把Google Wave。页面和Gnome差不多,比较Q。

但是苏对它的评价并不是很高:一,帖子少;二,任何人都能改东西,总有那么一两个不自觉的; 三,无法退出一个Wave,一旦有那个不长眼的加个机器人,后果不堪设想;四,无法删除一个Wave,Trash里面全是Muted的空Wave。

其中第二三四都是Google Wave的设计理念导致的。老外和我们的想法很不同,他们一定觉得Wave作为一个协作系统和讨论平台是不应该出现”admin”这种东西的,而且作为一 个项目不能说退出就退出。他们认为Wave一旦发出,就至少有两个人,所以不应该让你删除的Wave影响其他人;一旦加入一个讨论,自己肯定不能退,无论 你是因为工作还是爱好,一旦加入就代表有责任有兴趣参与讨论,而没考虑你无辜的情况。而没有admin,也就不可能把你清出去;Wave的卖点就是大家可 以在一张纸上同时画画,所以你的东西不让改那什么都无从谈起了。总结一下就是“强买强卖”+“一锤子买卖”。

苏觉得至少可以这么改进: 1, 公共Wave不可删除,私人的可以;2, 任何空Wave都可以删除;3,可以离场或经其他所有人投票后可以离场(用于清理不自觉的和不长眼的);4,插入机器人要所有人投票通过,如果可以自己离 场此条作废; 修改应发送修改请求,或修改结果要经“编辑链”的“上游”通过(表达不太清楚,用jQuery的写法就是prev()而不是prevAll(); ); 5, 所有修改结果都像pastebin一样有存档,有据可查。这样Wave才能算作一个有秩序的协作系统和讨论平台,才会真正有企业对它感兴趣,其实企业最需 要的不是实时,再实时有视频会议说的清楚么?企业最需要的是秩序,现在的Wave最多算个会议的白板,不能主导会议的方式。

好吧,苏作为一个TMT分析员已经跑题了,不谈工作不谈工作。下面开始苏的“WordPress瞎搞教程“,老鸟可以扫过,但请别飘过,毕竟苏的brandwidth不是特供你飘来飘去滴,苏希望物尽其用,你不想说话可以潜水,但别跳出来说没用的。

我的出发点和@lookon叔叔不一样,他是在想怎么把Wave引入博客,我是想怎么把博客变成Wave。本着中国的“大山寨”精神,我没有,还不行自个儿造么。。。

先上一张Google Wave的单个Wave截图:

这张是苏和推特美女@sdelayang的私人ping哦,相信大家在直勾勾滴盯着美女照片看的同时脖子扭扭屁股扭扭滴也能发现Google Wave的New Wave主要(细节苏会在以后的文章中一点一点纠结出来)有如下特征:

1,嵌套; 2,未读消息前面显示一个小绿条; 3,作者头像右下角有一个小绿点;4,每条消息之间用点线分开;5,嵌套评论有阴影。还有2个截不出来的特征: 6,鼠标放在消息下方会有一个蓝色圆框出来让你继续嵌套或者是续接这个嵌套层,如下图; 7, 鼠标左键点击消息会出现一个绿色框选中该条消息,继续单击无法取消,只能点击别的消息或者离开该Wave,效果才会消失(也就是说你要么不点,一旦开始点 就始终会有一个绿色的框框在某条消息上。)。单击过的消息前面的小绿条消失。

也就是说,你的WordPress评论只要有如下特征,就基本可以伪装成小半个Google Wave了。

下面纠结实现方法:

其中1,嵌套是WordPress 2.7以后就自带的,本身已经非常强大,不去管它;

4, 每条消息之间用点线分开,这个最简单,css的问题。以下均以WordPress 2.8.4的default主题的comments.php里面的class为例,当然default是用的<?php wp_list_comments(); ?>这个函数,肉眼看不到任何class,但不要忘记我们还有Firebug这个强大的debug工具 :-) 只需要

[class~=vcard] {padding-top: 5px; border-top: 1px dotted gray; }

就可以了。||注释: [class~=vcard],css高级选择器,意思是有class=”1 2 3″这样的element都选中, 或者你也可以写div.vcard和.vcard, 也能选到,但是,俄,严谨嘛,苏用的css编辑器是KDE自带的Kwrite,会把高级选择器显示为苏最喜欢的粉色,宽恕苏的完美主义吧……

5,嵌套评论有阴影,这个也很简单只需要用PS或者Gimp做一个阴影加上就好了(苏用Gimp),也是CSS 问题。切图稍微有一点讲究,就是只能横着切不能竖着切,因为你不知道人家留言会留多少高度。所以切一小块阴影,repeat-y做 [class~=depth-2]的背景,把最下面的底切下来作为ul.children的背景。

延伸:苏的评论是嵌套了两层,因为苏不是个无聊的人呢,不会像Google Wave上面有些人一样20多岁了玩套圈圈,一层一层又一层,但是从技术上这是要说的,因为可能有人就喜欢设置个10层。那样就不止是对 [class~=depth-2]做背景了,准确的写法应该是

li[id|=comment]:not[class~=depth-1]

,也就是说这个背景要给到id是comment-<?php comment_ID(); ?>的、除了第一层的所有li上。另外那个底部的处理也不能像苏现在这样直接截一条下来当底部咯,因为每一层的嵌套宽度都是不同的,我们至少需要2 个element来实现下面的底。首先是

li: last-child

, 这个好理解吧,每一层的最后一个li,可以把那个左下角截下来给它当背景。然后对第一层的最后一个li去掉这个背景,

li.depth-1: last-child {background: none;}

。其他的阴影可以交给ul.children。当然有像苏一样完美主义的人非要在这一条里面在实现一个右下角的圆角阴影效果也不是不可以滴,那就是

li: last-child p: last-child

这个element咯,把右下角效果交给它吧。

具体的css代码苏就不写咯,剩下的就是重复工作咯,毕竟苏已经把选择哪个元素加背景写出来了,剩下的无非就是padding, margin的调整让它们在一条线上罢了。

好,到现在CSS能做的工作苏已经做好了。下面轮到标题中就已经提到、但现在还没有出现的jQuery上场咯。

是不是非用到jQuery不行呢,很抱歉,在这个情况下,是的。苏是CSS党,如果是一个Accordin效果苏完全可以抛弃jQuery,ie对:hover伪类支持的不好,苏可以把代码写到一个<a>里面嘛 :-) 这里非jQuery不行是因为我们需要针对click做效果,css不行。

2,未读消息前面显示一个小绿条。这句的关键在于判断什么是未读。苏对服务器端不熟悉,所以苏这里无法说你这次 click一下表示读过,关闭网页重开,我就会记住,哦,你这条读过了阿。Google有那么大的服务器,有能力,而且它的每一个用户都是肯定有帐号的, 苏即使有那么大服务器也只能针对ip地址做一个mysql表,哦,这个ip读过这条评论,但你换个地方上网,或者极端情况你坐那里没动,路由器换跟线,苏 这里就又要重新记住你一回,总不能强制访客注册吧。所以按用户“记住”未读消息是不太可能的,我做WordPress不是做Google Reader。 苏从客户端对未读的解释就只能是你打开网页,所有的评论你都没读过。这一方面是苏的技术不够,或者说是花费的精力和所得到的效果完全不成比例,投入/产出 比不对,苏是经济学人呢~另一方面就是比如cnbeta,可能吧那种大站,一点开页面所有评论你都没读过的可能是存在的,而且是经常的,呵呵,苏已经开始 好高骛远了呢。

好咯,未读说完了,你可以直接写在你的模板里,comment-body后面加个class=”unread”。但是别忘记了,我们用的可是默认模板阿,是看不到这些的,没关系,用jQuery:

$(document).ready(function () { $(".comment-body").addClass("unread"); });

然后再对unread class做CSS,加上一个小绿条的背景。或者直接:

 $(document).ready( function () { $(".comment-body").css({' background', 'url(XXXXX.png) top left repeat-y '}); });

按照逻辑的配对(实际上苏也正是这么做的),接下来应该说的是7, 鼠标左键点击消息会出现一个绿色框选中该条消息,继续单击无法取消,只能点击别的消息或者离开该Wave,效果才会消失。单击过的消息前面的小绿条消失。

这个无论如何用css都做不了。代码比较简单,直接放代码吧:

$(".comment-body").click(function() {
$(this).removeClass("unread"); //去掉被点击的消息的小绿条;
$("[class~=comment-body]").removeClass("selected"); //如果其他的消息上面有绿框则去掉它们,用来保证只有一条消息是选中的;
$(this).addClass("selected"); //给选中的消息加绿框。
});

下面处理那个3作者评论头像右下角的小绿点。苏是用jQuery追加数据的方式实现的,代码是这样的:

$("li[class~=bypostauthor]").children(".comment-body").children(".vcard").children("img").after("<span class=\"postauthor\"></span>");

首先要选中作者评论,WP2.8自带的嵌套已经给出了两个比较特殊的class,一个就是byuser, 代表你在我的站上注册过,另外一个就是bypostauthor,文章作者。各位走过路过滴同学心里应该有所共鸣了吧,通过定义byuser的样式可以提 升访客体验。继续解释代码:选到文章作者评论的li,然后选到它的重孙img,就是Gravatar,然后在它的后面追加一个span。定义span的 css即可。为什么不追加div呢,因为会把后面的作者名字和发表时间挤到下一行去。BTW,不要用绝对定位的方式定义这个span的css, 因为绝对定位会从当前文档流中排除,很容易就覆盖了紧跟在后面的评论作者名字。可以用margin的负定位。

当然,对jQuery没有信心的同学完全可以用参考线量出这个圆点应该出现的准确位置,然后作为<cite class=”fn”>的背景,然后对cite进行绝对定位+z-index让它覆盖在Gravatar的上面 :-) 不过就是太麻烦咯。

下面是最后一个效果:6,鼠标放在消息下方会有一个蓝色圆框出来让你继续嵌套或者是续接这个嵌套层。

其实这个简单来说针对的主要是wordpress嵌套评论的reply按钮。用那个圆角方框完全替代reply按钮,再把它隐藏起来,鼠标滑过的时候显示,之后隐藏。很简单的一个jQuery效果吧。

但是它的难点在于,真正的Google Wave是可以让你选择是开始新的嵌套还是继续当前嵌套层的,也就是说可以把你的回复贴到别人嵌套层上面,开始一个新的同级ul。这个需要ajax的支援,苏会写在本系列文章的第二篇里面。

为了高度仿真Google Wave,我们也要让它能选择开始新的嵌套或者继续当前嵌套。好吧,苏的技术有限,现在还没想到好方法。但是“在一个已经有嵌套的评论下面显示‘继续当前 嵌套’,在没有嵌套的评论下面显示‘开始新的嵌套’“,这总归是可行的,不然我写那么多玩什么呢对吧……

用jQuery来说就是,先判断当前评论是不是第一层(因为苏只有两层,第二层就已经不能在继续“开始新的嵌套“咯),然后再判断第一层的元素下面 有没有嵌套(这个逐渐缩小的过程能理解吧,第二层是绝对没有嵌套的,判断第一层就行了),如果有嵌套就给一个继续当前嵌套的class,如果没有就给一个 开始新的嵌套的class。这是default主题的情况。代码:

$(".comment-body").mouseover(function() {
if ($(this).parent("li").hasClass("depth-1")) {           //判断是不是第一层
if($(this).parent("li").hasClass("parent")) {            //判断有没有嵌套
$(this).children(".reply").addClass("continue");
$(".continue").show();
} else {
$(this).children(".reply").addClass("insert");
$(".insert").show();
};
} else {
$(this).children(".reply").addClass("last");           //如果是第二层
} endif;
}).mouseout(function() {
$(".insert").hide();
$(this).children(".reply").removeClass("insert");
$(".continue").hide();
$(this).children(".reply").removeClass("continue");
});

不知道大家搞懂了没,苏的JS不强,所以用的效果都很简单的,大家可以在此基础上加效果。

延伸: 同样是多层的情况,专门写给那些无聊的同学的。

由于存在的层数未知, 这时候道理就应该反过来说咯,先知道最后一层,一层一层往上推,因为只有最后一层是特殊的,就是它不能再开始新的嵌套。判断最后一层的方法是: 判断有没有下家,这时不能用parent的方法来判断,因为他可能是中间某层,只需要判断这一层有没有ul.children就可以咯。另外还要判断 prevAll和nextAll有没有ul.children,避免出现正好判断在岔路上这种悲剧。

而至于背景,这时候也不适合用addClass的方式了,因为每一层宽度不同,要很多很多Class。苏之前也不懂怎么做,但是今天做 comments.js的时候发现了一个方法,就是:写一个递归变量,每次都+若干个px,然后把这个变量赋给width,这样只需要做一个最宽的没有最 左边图像的背景,再right top,然后对<div class=”reply”>做背景补全那个左上角,通过width就能画出宽度不同的reply按钮咯。

关于递归变量可以看这句:

$('#commentnum').text(parseInt(jQuery('#commentnum').html()) + 1);

好啦,总算写完这篇“技术文”咯,其实就是个想法,大部分代码我没贴是吧,但关键代码我都贴了对吧。这个做法是开发大家的想象力,因为自学的菜菜阶 段的想象力其实是最丰富的,为了实现一个结果会去想好多好多种方法,但是专业的设计师就不会,因为他们脑子里早就有最好的啦,你可以从他们网站上cp过 来,效果有了,但你什么也没学到不是么。吼吼,不教育人了,其实这一方面是苏对于那些代码也是一知半懂,写能写出来但要纠结好久,干脆就贴个想法咯;另一 方面是做ajax评论时候得到的教训,就去网上下了一个php一个js,搞定了。。。可是我依然不知道什么是ajax。

<!– 这篇文章为小女原创,小女完全明白其意思,可以转载,但是不可以歪曲事实,要么不转要么全转; 可以在此基础上继续开发,但请另起炉灶或保留原文的基础上加注释。此类无聊雷同文并不好找,如果真的有雷同,本人可能不愿起诉你,但心情不好对你发飙你也 请胳膊打折袖里藏~–>

]]>
http://ownlinux.info/blog/?feed=rss2&p=794 0
申请一个自己的Gravatar头像+给WordPress模板加入Gravatar支持~ http://ownlinux.info/blog/?p=715 http://ownlinux.info/blog/?p=715#comments Sun, 20 Sep 2009 18:59:12 +0000 mickeywaley http://ownlinux.info/blog/?p=715 Gravatar(个人全球统一标识)是globally recognized avatar(直译为”全球标识的头像”)的缩写。它可以在一切支持Gravatar的场合显示你的专属头像,就是能让你在发布评论的时候可以使用专属头 像,它将和你填写的email地址一一对应,WordPress2.5以上版本,已经集成了Gravatar头像功能。具体申请步骤如下:

◆登陆http://en.gravatar.com/site/signup,填写注册邮箱之后,点击”Signup”按钮;

◆到注册的邮箱中查收邮件并点击其中的链接确认;

◆在弹出页面中填写相关内容;

◆点击页面中部框框下的链接”Add one by clicking here!”;

◆如果要从自己的本地硬盘上传一张头像,那就点击第一个链接”My computer’s hard drive”上传头像;

◆进入Crop页面,滑动滑块选择你需要的照片区域后点击页面下部的”CROP”按钮;

◆给自己的头像评定级别。G 普通级、PG 辅导级、R 和 X 为限制级,一般不黄不暴力的选G就行了;

◆点击页面中的头像照片,在弹出的小页面里点击”Confirm”钮确认;

◆到支持Gravatar头像功能的网站发表评论试试吧,要想改头像的话只需要到http://en.gravatar.com/网站里登陆后修改即可。

给WordPress模板加入Gravatar支持~

WordPress 2.5开始就已经直接将Gravatar这个全球统一头像服务的API包含在里面了,然而vifix.cn使用的模板是为WP 2.1设计的古老模板,自然没有调用到这么高级的东西,所以今天加上了,效果嘛,见blog文的评论区吧~

只要在模板的comments.php加入:

<?php echo get_avatar( get_comment_author_email(), '60' );?>

(这其中,60为生成的头像的尺寸)

详细的可以参考这个文档:http://codex.wordpress.org/Using_Gravatars

上传自己的gravatar头像可以去http://www.gravatar.com

话说回来,目前在IE6下面的显示还有点奇怪,不高兴管了 orz
这年头,IE8都已经正式发布了 – v -

首先在主题文件夹中找到comments.php,在其中查找<?php comment_text() ?>,并在之前加入<?php echo get_avatar( $comment, 50 ); ?>即可,50是头像的大小,可以更改.

比如我用的这个主题:<div class=”obsahk”><?php echo get_avatar( $comment, 50 ); ?><?php comment_text() ?><?php edit_comment_link(’编辑’,’<p>’,’</p>’); ?></div>

29bcb455

]]>
http://ownlinux.info/blog/?feed=rss2&p=715 0
wordpress在win主机成功开启伪静态,mail待开启 http://ownlinux.info/blog/?p=540 http://ownlinux.info/blog/?p=540#comments Thu, 13 Aug 2009 06:25:05 +0000 mickeywaley http://ownlinux.info/blog/?p=540 win主机成功,通过N天努力,伪静态通过【win主机 伪静态 】这篇教程也实现了【预览:我的博客】

最近使用wordpress建立了这个八喜博客,首先国外的程序环境要求和国内的好多差异,采用ISAPI_Rewrite后怎么也无法静态化,静态化成 功后网址中必须带有index.php,本来无法去掉也无所谓;当文章翻页的时候发现了问题,主页的分页到第二页第三页….都无法打开,原因是地址中 竟然多了一个index.php(例如:index.php/index.php/pag这样了,url完全错误了),许多人说环境问题,无奈下开始考虑 重新来考虑静态问题,分析思路采用Discuz论坛哪种伪静态方式比较不错,那么为什么discuz可以,却在wordpress不可以呢,功夫不负有新 人,昨天晚上调试成功了,和大家分享一下。

首先你的服务器加载了ISAPI_Rewrite,Discuz如果您正在使用伪静态,那么就不要考虑再次加载了,在wordpress官方许多人提出了 需要单独加载专用的Rewrite,其实不需要,在国内的文章copy太严重了,找了一天,发现重复的起码有9.6成都同出一辄,没有一点正确性,不能使 用,无奈之下去国外搜索到后,建立了httpd.ini,网站成功完成了静态,永久链接规则也可以自行随意根据喜好设置,这是国内那些描述中还没有做到 的,本站就是采用的这个规则,在永久链接内也可以随意修改自己的喜好网址样式,同样seo目的也达到了,如果您在使用wordpress的时候还在被前边 描述的问题困扰,那么赶快行动吧。
备注:
1、在你使用ISAPI_Rewrite后,无需再使用cos-html-cache静态生成插件,因为没有这个必要了。
2、ISAPI_Rewrite国外网址:http://www.basilv.com/psd/blog/2 … dpress-20-under-iis
规则如下:
[ISAPI_Rewrite]
# Defend your computer from some worm attacks
#RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteRule /software-files/(.*) /software-files/$1 [L]
RewriteRule /images/(.*) /images/$1 [L]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]
安装说明:
1. 将Rewrite.dll拷贝到c:\Rewrite.dll(也可以拷贝到C:\WINDOWS目录内,位置根据喜好可以自由放置);
2. 在IIS的Isapi上添加这个筛选器, 筛选器名称Rewrite,可执行文件选择Rewrite.dll;
3. 重新启动IIS,成功后会有如下显示:

4. httpd.ini 是配置文件,如果您了解Rewrite 规则,可以直接对其进行编辑;
5. 默认规则为wordpress专用,其他PHP程序伪静态无法使用;
备注:在前三项成功完成后,将httpd.ini传送到网站跟目录就完成了伪静态环境搭建,下边开始进入后台,设置永久链接采用自定义方式,代码可以参考官方:http://codex.wordpress.org/Using_Permalinks,设置您喜欢的显示方式即可[例子:/%category%/%postname%.html 含义是按照分类目录名称/内容页名称.html方式,增加html就是大家喜欢看到的静态标识 ]伪静态就这样建立完成了;
附件下载
http://mickeywaley-blog.googlecode.com/files/rewrite.tar.gz
2009.8.13日更新(以上代码已更新,复制即可使用):
增加了对Google网站sitemap.xml的支持;
RewriteRule /sitemap.xml /sitemap.xml [L]

]]>
http://ownlinux.info/blog/?feed=rss2&p=540 1
wordpress固定链接设置 http://ownlinux.info/blog/?p=532 http://ownlinux.info/blog/?p=532#comments Wed, 12 Aug 2009 18:36:38 +0000 mickeywaley http://ownlinux.info/blog/?p=532 固定链接其实就是修改 WordPress 目录、页面或者帖子的超级链接也即 URL 的形式,这里的固定既可以理解为动词也可以理解为形容词。只有通过固定链接,你才能找到这个目录。由此可见,固定链接在博客中的重要性。对于wordpress 用户而言,掌握一下一些固定连接的设置参数和技巧,则能够让别人更好的找到你的博客。

永久链接设置参数:
参数不多说,很死的东西,按照WordPress官方文档列表如下:

1. %year%
基于文章发布年份,比如2007;
2. %monthnum%
基于文章发布月份,比如05;
3. %day%
基于文章发布当日,比如28;
4. %hour%
基于文章发布小时数,比如15;
5. %minute%
基于文章发布分钟数,比如43;
6. %second%
基于文章发布秒数,比如33;
7. %postname%
基于文章的postname,其值为撰写时指定的缩略名,不指定缩略名时是文章标题;
8. %post_id%
基于文章post_id,比如423;
9. %category%
基于文章分类,子分类会处理成“分类/子分类”这种形式;
10. %author%
基于文章作者名。

将上述参数进行组合,即可得到wordpress的固定链接形式。网上常见的几种设置方法:

* /%year%/%monthnum%/%day%/%postname%/
* /%year%/%monthnum%/%postname%/
* /%year%/%monthnum%/%day%/%postname%.html(建议)
* /%year%/%monthnum%/%postname%.html
* /%category%/%postname%.html(本站用的就是这种形式)
*/%postname%.html(推荐形式)
* /%post_id%.html

永久链接设置技巧:

一、不要让日期出现在固定连接链接里面

这基于两个方面的考虑。一是如果数字出现在固定链接里面,等于提醒搜索引擎,这是很旧的内容了,没必要再爬一遍了。另外一个原因是,假如你要修改文章的日期重新发布的话,链接地址就变了,也就是意味着你的反向链接,PR 等等都没有了。
二、不要让分类的链接出现在固定链接里面

这一点是很多人都会忽略的地方。让分类出现在固定链接里面有两个缺陷:一是一篇文章如果选择了多个分类的话,则会出现多个链接地址,这很容易造成因为重复内容而被搜索引擎惩罚;二是有可能会造成关键词堆砌而被搜索引擎惩罚。
三、链接不要过深

这一点经常看到。很多wordpress 用户的固定链接是年/月/日/分类名/文章名。这种过于深的固定链接对搜索引擎是非常不友好的。
四、不要让中文字符出现在固定链接里面

虽然现在的搜索引擎已经能识别URL地址里面的中文字符,但无论是从美观上,还是从wordpress 优化的角度来看,都是非常差的。

Win服务器下设置WordPress固定链接伪静态

只要主机支持自定义404页面,无需安装插件,就能让Win主机像Linux 那样,方便使用WordPress的固定链接为静态化地址格式。

<?php
header(“HTTP/1.1 200 OK”);
$ori_qs = $_SERVER['QUERY_STRING'];
$pattern = ‘/[^;]+;[^:]+://[^/]+(/[^?]*)(?:?(.*))?/i’;

preg_match($pattern, $ori_qs, $matches);
$_SERVER['PATH_INFO'] = $matches[1] . ‘?’ . $matches[2];
$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
$query_args = explode(‘&’, $matches[2]);
unset($_GET);
foreach ($query_args as $arg)
{
$the_arg = explode(‘=’, $arg);
$_GET[$the_arg[0]] = $the_arg[1];
}

include(‘index.php’);
?>

设置固定链接(Permalink)伪静态步骤:
1. 将以上代码保存为 404.php,并上传至主机根目录。
2. 设置 404 自定义错误页为 404.php。
3. 进入 WordPress 控制面板,设置(Options)- 固定链接(Permalinks),选择固定链接格式。如果你觉得上面新建404页面太麻烦了!那我给你推荐一个插件吧!那就是Permalinks Migration Plugin

Permalinks Migration Plugin的主要原理是利用“301转向”来实现既不丢失原有的链接,同时又让读者和搜索引擎知道,你已经修改了固定链接的效果,让他们尽快更新链接。

上面的这次也算是我用wordpress以来设置固定链接的一些方法了,发出来跟大家分享。

]]>
http://ownlinux.info/blog/?feed=rss2&p=532 0
如何升级 WordPress http://ownlinux.info/blog/?p=506 http://ownlinux.info/blog/?p=506#comments Wed, 12 Aug 2009 07:16:07 +0000 mickeywaley http://ownlinux.info/blog/?p=506

如何在五步内升级

如果您想要更确切详细的说明,请阅读详细升级说明!!!

升级 WordPress 需要一点技巧,但是别害怕,本指南将帮助您快速升级您的 WordPress! 这个过程将为您提供一些指导以避免灾难的发生 (其他软件提供商可能把这种灾难称为称为“用户错误”)。

开始前,您需要明白 WordPress 自身上很容易升级的。为了保留您对 WordPress 的定制,本指南才是一个五步的过程而不是三步。您完全可以相信这是一个 5 分钟的过程,但是如果您是一个资深的博客,备份数据和文件的过程可能会让整个过程略微长一些。

让我们假设您的 Blog 的网址为 http://aq520.com/wordpress/

安全完整的升级步骤如下:

步骤 1: 备份数据表和文件,包括 .htaccess
这里的目标是保存数据,和您的定制。

步骤 1a: 保存数据
使用 phpMyAdmin 或其它主机商提供的合适的工具,备份 WordPress 使用的数据库。

步骤 1b: 保存定制
根本上说,就是备份您自从安装 WordPress 标准版本以来曾经修改或添加的文件。使用一个 FTP 工具下载服务器上位于 WordPress 安装目录内的所有文件的一份复本,包括 .htaccess 文件 (如果您曾经建立过它)。至少要备份 .htaccess 文件,您当前主题使用的文件 (位于 /wp-content/ 目录),包含您上传的图片和文件的 /wp-images/ 目录,任何您修改过的 WordPress 核心文件,以及包含数据库信息的 wp-config.php 文件等。

步骤 2: 禁用插件
在插件管理界面禁用所有您使用的插件 ( http://aq520.com/wordpress/wp-admin/plugins.php )。某些插件可能无法工作在新版 WordPress ,这就是为什么您要先将它们全部禁用。这能确保您在升级完成后 WordPress 不出现错误。

步骤 3: 覆盖文件
获取最新版本的 WordPress并上传到 WordPress 目录,覆盖所有存在的文件。它会保留您的图像和主题。如果出错怎么办? 您在步骤 1 中备份了所有文件吗? 如果您遇到了最坏的情况,您还可以用备份的文件恢复。删除所有老的文件并上传您下载的最新的文件也是一种方式,能够确保服务器上的文件是最新的。

步骤 4: 运行升级程序
访问 Blog 的升级页面 ( http://aq520.com/wordpress/wp-admin/upgrade.php ) 并根据提示操作。

步骤 5: 按顺序重新启用插件
在插件管理界面一个个的重新启用插件 ( http://aq520.com/wordpress/wp-admin/plugins.php )。检查是否一切工作正常。这里有一个列表列出了已知能够工作在 WordPress 2.0 下的插件。如果某些插件无法工作,您可以联系作者以鼓励他升级插件。

就这么多了。

如果出现问题怎么办? 别着急,因为您在早些时候备份了全部数据,只要在出现问题的时候恢复您备份的文件和数据表。然后,您可以考虑阅读一下下面的详细说明。

详细说明
开始之前
备份您的数据库。
备份所有的 WordPress 文件,包括 .htaccess (如果存在的话)。
确认您创建的备份有效可用。
禁用所有的插件。
重要提示: 如果您没有执行上面的步骤,请不要尝试升级。

升级过程概览
备份您的数据库。请阅读备份您的数据库以了解更详细的信息。
备份 WordPress 目录中的所有 WordPress 文件。不要忘记备份 .htaccess 文件。
确认您创建的备份文件存在并可用。这很重要。
禁用所有插件。
确保前四个步骤已完成。未完成前请不要尝试升级。
http://cn.wordpress.org下载并解压缩 WordPress 文件包。
删除您网站中老的 WordPress 文件,

但不要删除
wp-config.php (数据库配置)文件;
wp-content 文件夹保留。但是里面的: wp-content/cache 文件夹应该被删除。
wp-content/languages文件夹——如果您使用了语言文件,请不要删除这个文件夹;

wp-includes文件夹可以删除;
.htaccess 文件——如果您为 .htaccess 添加了自定义规则,那么不要删除它;
robots.txt 文件——如果您的 Blog 在网站的根目录 (例如,Blog 就是整个网站) 并且您曾经创建了这个文件,不要删除它。
从您的电脑硬盘上传新文件到网站上对应的 WordPress 文件夹。
运行 WordPress 升级程序,并按照屏幕上的提升进行操作。
更新永久链接和 .htaccess。如果需要,更新永久链接结构并融合自定义规则到 .htaccess 文件。
安装更新的插件和主题。请查看可工作在版本 2.0 的插件列表并检查主题作者是否发布了新版本。
重新启用插件。
回顾 WordPress 中的改变。
以上就是整个升级过程的概览。请继续阅读详细安装说明。

请记住,如果您遇到了问题,重新阅读下面的说明以确保您严格按照步骤进行了操作。

]]>
http://ownlinux.info/blog/?feed=rss2&p=506 0
WordPress由Z-BLOG今天转换而来 http://ownlinux.info/blog/?p=791 http://ownlinux.info/blog/?p=791#comments Tue, 11 Aug 2009 17:38:28 +0000 mickeywaley http://ownlinux.info/blog/?p=1 早就想转换WordPress了,以前是空间不支持,前段时间又安装了次,没想到可以了,不过那是没时间,今天正好有空余时间,就转换了下。
WordPress久违了。。。

]]>
http://ownlinux.info/blog/?feed=rss2&p=791 0
WordPress流氓插件之自动采集 http://ownlinux.info/blog/?p=449 http://ownlinux.info/blog/?p=449#comments Fri, 08 May 2009 07:19:02 +0000 mickeywaley http://ownlinux.info/blog/?p=449 为了符合国人的网站行情,终究还是有国人开发了这个顶级WordPress流氓插件之自动采集.并且由我这个小流氓在这里给大家介绍一下.

SNAG-0020

只想说,流氓插件都做的这么高级文雅了,一个流氓插件的名称居然做的这么绅士:风度文章自动采集发布插件.

使用简洁方便,几乎谁都会用.只要有被采集的RSS,然后它就可以自动采集.就这么简单,要国人做出一个比WordPress更好的blog源码恐怕很难,但是要做出一个牛逼的流氓插件却是国际顶尖技术.

用这个插件再配合我前篇日志讲到的:Wordpress流氓插件之自动保存远程图片.简直他妈的绝了.

[下载页面]

]]>
http://ownlinux.info/blog/?feed=rss2&p=449 1
Wordpress流氓插件之自动保存远程图片 http://ownlinux.info/blog/?p=448 http://ownlinux.info/blog/?p=448#comments Fri, 08 May 2009 07:17:28 +0000 mickeywaley http://ownlinux.info/blog/?p=448 先说说这个插件的功能:

1.自动保存你引用的远程图片.
2.自动去掉文章和图片中的非本站链接.
3.无耻的给你偷过来的图片自动加上你的水印.

wordpress中文论坛里很多人都问过wordpress是否有自动采集功能,我回答说.国外的优秀程序是不会走流氓路线的.

但是国人的流氓精神还是很强大,wordpress的采集功能肯定有.但是我也不是很清楚,这里只能先介绍这个流氓插件了,如果发现更好的流氓插件一定会给你们提供的.

这个插件可是手工采集的好帮手,如果你使用的是WLW的话,手工采集会更快哦.

[下载页面]

]]>
http://ownlinux.info/blog/?feed=rss2&p=448 1