文章关键字 ‘wordpress’

Google Ajax Search使用教程

2008年08月20日,星期三

最近更换主题时没有做搜索模块,首先是闲麻烦,再则Wordpress内置的搜索功能仅算一般,索性也不做搜索框了,然而有时候要找以前的存档又不方便,看到ThinkAgain博客上的Google Ajax Search功能强大,速度贼快,自己也搞了一个,期间也算历经千辛万苦,终于搞定了,先贴结果图。

先介绍一下Google Ajax Search,这是Google面向小型网站、博客推出的搜索服务,它在你的网站上内置搜索框,用AJAX方式调用结果显示在你的网站上,此过程不用访问Google的网页,增快了搜索的速度,提供更好的访客体验。

现在开始说一下如何使用吧。首先要注册一个Google Ajax Search的KEY,挺容易的,输入你的网址,如http://photozero.net ,打个勾赞成服务条款就会得到一个KEY,这个KEY只能用于这个域名下的网页调用。

接下来是把一个Javascript文件嵌入你的博客中。在博客后台打开“主题”-》“编辑主题”,找到“header.php” 这个文件编辑。把类似于

  1. <script src="http://www.google.com/jsapi?key=ABQIAAAAxbEbYoIMv2ddhn6TUcYTwhRLVF4ECcLU8-XSpyOqP4CBr2JuVBTOm1FzKI3-GU5dOFYWlWLxpqdlzA" type="text/javascript"></script>

的代码放在

  1. <head>
  2. ..
  3. </head>

之间。

这是第一步,在你的博客里面引用Google的AJAX搜索的文件。如果担心载入速度受到影响,可以把这个JS文件放在最后载入也是没有问题的。

第二步;在合适的位置放置搜索结果的标记。当用户进行搜索后,这个结果显示在你的博客的某个位置。我的建议是放置在Header之后,博客文章开始之前。我在要放的结果放一个

  1. <div id="googlesearchresult"></div><!--表示结果在这里显示-->

第三步,在合适的位置放置搜索框,如我的是在侧边栏,编辑“sidebar.php” ,在合适的位置放上标记:

  1. <div id="googlesearchcontrol"></div><!--表示搜索框在这里显示-->

第四步,也是最重要的一步,对搜索进行配置。Google Ajax Search(文档)提供了包括网页搜索、博客搜索、视频搜索、图片搜索等多项搜索服务,还可以限定结果网站(如 photozero.net ,限定在 photozero.net 里面搜索结果),相当于“站内搜索”。这一步也是比较麻烦的,如果懂得JavaScript还好说,不懂得就照例画葫芦。下面是示范代码。这是一个类似于标签式的排列方式,另一种是由上至下的排列,比较难看了点。

  1. <script language="Javascript" type="text/javascript">//<![CDATA[
  2.       google.load('search', '1.0');//载入Google Ajax Search
  3.      
  4.       function OnLoad() {
  5.  
  6.         // create a tabbed mode search control
  7.         var tabbed = new google.search.SearchControl();//创建一个控制器
  8.        
  9.         var siteSearch = new google.search.WebSearch();//实例化一个搜索器
  10.         siteSearch.setSiteRestriction("photozero.net");//限定搜索范围,相当于站内搜索了
  11.         siteSearch.setUserDefinedLabel("Photozero站内搜索");//该搜索条显示的名称
  12.        
  13.         tabbed.addSearcher(siteSearch);//将站内搜索添加到搜索器中
  14.         tabbed.addSearcher(new google.search.WebSearch());//添加Web搜索
  15.         tabbed.addSearcher(new google.search.BlogSearch());//添加博客搜索
  16.         tabbed.addSearcher(new google.search.NewsSearch());//添加新闻搜索
  17.         tabbed.addSearcher(new google.search.ImageSearch());//添加图片搜索
  18.         tabbed.addSearcher(new google.search.VideoSearch());//添加视频搜索
  19.  
  20.         // draw in tabbed layout mode
  21.         var drawOptions = new google.search.DrawOptions();//设置搜索选项
  22.         drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);//以标签栏显示
  23.         drawOptions.setSearchFormRoot(document.getElementById("googlesearchcontrol"));//放置搜索框的位置,如果应用在博客以外的某些网页,搜索框要和搜索结果显示在一起,就不用这句。
  24.  
  25.         tabbed.setResultSetSize(google.search.Search.LARGE_RESULTSET);//设置搜索结果显示大小,有大(显示8条)和小(显示4条)之分
  26.         tabbed.draw(document.getElementById("googlesearchresult"), drawOptions);//设置搜索结果和选项
  27.  
  28.         //tabbed.execute("neekey");//如果要在载入时就进行搜索请添上这句
  29.       }
  30.       google.setOnLoadCallback(OnLoad, true);
  31.       OnLoad();//启用代码
  32.     //]]>
  33.     </script>

好了,把上面的代码放入网页的任意位置,就可以看到像我的博客一样的效果了。此外,还有人为这个写了插件,好像就叫Google Ajax Search,但似乎很久没更新了,我也没去试用,如果贪图方便的朋友请上官方插件目录搜索一下。

博客换新装

2008年08月19日,星期二

经过了几天的本地调试,终于把这款自己制作的Wordpress主题放到了博客上。您当前看到的这个主题就是我自己制作的主题,名字叫Simple Zero

这个主题有一些特点:

Header上的书签收藏的链接;这个ICON以及链接是从ThinkAgain的wp_addbookmarks上搬过来的,我觉得这种纯HTML的事直接放在主题里就好了,弄成插件略微占了点服务器资源。ThinkAgain的效果更不错,平常情况下ICON是用CSS的ALPHA模糊了,一旦鼠标移上去(热点)又变成正常的图标。我把这个效果试着写入CSS中,在CSS校验的时候被告知FLITER:ALPHA不存在于CSS2.1,存在于CSS3.0,另外一个opacity又是语法错误,只好不弄这个效果了。

10种语言翻译功能。这个功能虽然实用性不大,但如果有了这功能就自我感觉良好,YY一下。这个功能应该也有WP插件能提供的,此外Google也提供了Widget,相比之下,使用插件略微有点浪费,使用Google Widget又担心JS的调用影响速度,而我的做法是内置的HTML的 <a>链接,不会拖累速度。这些国旗的ICON是我先前介绍的FAMFAMFAM出品的世界各国国旗,效果还挺不错的。而Google的网页翻译的URL也容易找到。

内置多种插件支持,包括了Thinkagain的Hot Friends,用于分页的WP-PageNavi,当然,自己的插件Reviewers_Info以及NeekeyBeta服务也是不能缺少的。特别针对WP-PageNavi的设计了更匹配页面的CSS风格。
更加完美的Gravatar支持。由于现在Gravatar在国内也是很普及了,该主题对Gravatar提供了更好的支持,甚至连文章的作者都已经用Gravatar头像来显示了 :)

标准的XHTML和CSS验证。已经通过了XHTML 1.0 Traditional,CSS 2.1认证。XHTML认真中比较容易出错的地方一个是 <img> 标签应该有 alt=”" 说明,另外是<a>或<img>等调用URL时 http://example.com/example.php?var1=A&var2=B,其中的&在HTML下应该用&amp;替换,当然,如果是XHTML 1.0 Strict标准,别忘了<a> 链接里不能用 target=”_blank”(新窗口打开)。通过了CSS和XHTML验证,我就放心地在页面的FOOTER挂上了W3.ORG的链接了。

至于小挂件方面,在FOOTER放置了ALEXA和Google Pagerank的图标显示,都是80*15px大小的图标,方便地让访客了解到你的博客的信息。,这个Alexa排名显示是特别为这个主题准备的,如果您想使用,请在网页的任意地方添加HTML代码 <img src=”http://dev.neekey.com/alexa-80×15.php?s=photozero.net” alt=”" /> ,其中粗体部分更换为你的网址。

支持主流的Firefox 3 和IE 7。通过Clicki的统计和留言的浏览器统计显示,我的博客访客中,Firefox是最常使用的浏览器,这与访客人群多为技术人员或对IT有一定了解的访客为主有关。另外,由于我的电脑上已经没有IE6,且IE6也算已经被淘汰,也没有去测试了,如果用IE6的朋友感觉很乱,还望见谅!

除了主题更换了,页面也做了一定的调整,在Zeus博客的指点下,我也创建了链接页面,今后博客首页只用Hot Friends显示本月最多回复TOP 20以及自己的NeekeyBeta项目的链接,其他链接转到Links页面,还望见谅。此外,我还把插件的页面重新划分了,看起来不会太乱了。

创建你的电子邮件联系页面

2008年08月16日,星期六

无论是一个网站还是一个博客,站长与网友的互动,不但需要有一个QQ、Email,更需要一个在线的即时Email联系表单。在Wordpress博客中有很多插件能够实现这种功能。但如果发送一个邮件都得调用WP程序的话,速度慢、安全系数不高,不如单独创建一个联系页面。

创建一个feedback.php 页面

  1. <?php
  2.  
  3. $email = $_REQUEST['email'] ;//留言者的Email
  4. $message = strip_tags($_REQUEST['message']);//留言信息,去除HTML标记
  5. if(!empty($message)){
  6.     mail( "username@example.com", "Feedback Form Blog", $message.'From:'.$email , "From: username@example.com");//调用系统函数 mail() 发送邮件。
  7.     //第一个参数是接收者,第二个参数是标题,这里设置了固定的标题,第三个是留言信息,第四个实际上设置了发送者的邮箱,为了防止被邮件系统误判为垃圾邮件,且安全起见,最好不要用用户直接输入的邮箱。
  8.     header('Location:http://photozero.net/thankyou.html');//留言完转到感谢页面
  9. }
  10.  
  11. ?>
  12.  
  13. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  14. <html xmlns="http://www.w3.org/1999/xhtml">
  15. <head>
  16. <meta http-equiv="Content-type" content="text/html;charset=utf-8" />
  17. <title>Feedback</title>
  18. </head>
  19. <body>
  20. <!-- 创建一个提交信息的表单 -->
  21. <form method="post" action="feedback.php">
  22.     您的邮箱: <input name="email" type="text" /><br />
  23.     意见或建议:<br />
  24.     <textarea name="message" rows="15" cols="40"></textarea><br />
  25.     <input type="submit" value="提交" />
  26. </form>
  27. </body>
  28. </html>

需要有几个需要注意的地方。
1.mail() 函数。不是所有的空间都可以使用mail()函数的,要取决于所在的服务器是否有正确设置了sendmail,否则即使使用了mail()函数也是无法发信的。创建这个页面后最好自己试一下能否使用。一般来说,国外比较大的空间,如我用的Dreamhost,mail函数都配置得挺好的,可以直接用。而国内很多空间的服务水平很差,很多函数、PHP库都没有设置、启用。我曾经用过的某个国内空间就是这样,(甚至连 iconv 这个很重要的函数都不支持,PHP版本居然还是 4.2.5的,我问他们技术支持,让他们升级PHP版本,他们却无动于衷)如果mail() 函数无法使用,则可能需要使用一些第三方的MAIL库或MAIL类,我也没试过,下回找一个

2.编码。国内很多邮箱是采用了GB2312等编码,建议在mail()函数的第四个参数(邮件的HEADER)设置一下,如这个代码来取代mail函数

  1. function mailer($to,$subject,$content,$header = ""){
  2.     $header .= "Content-type: text/plain; charset=utf-8 \r\n";//设置邮件编码
  3.     $header .= "Content-Transfer-Encoding: 8bit\r\n";
  4.     $subject = "=?UTF-8?B?".base64_encode($subject)."?="; //对标题进行编码,
  5.     @mail($to,$subject,$content,$header);
  6. }
  7. mailer( "username@example.com", strip_tags($_REQUEST['title']), $message.'From:'.$email , "From: username@example.com");

其他CSS之类的自己随便做一下就好了,挺简单的吧:)

Blog-Info-Display博客信息显示插件

2008年08月10日,星期天

在管理后台首页显示您的Google Pagerank,Alexa Rank,以及Technorati Rank排名,每三天自动更新一次。插件所用的函数都是我先前介绍的 如何获取Alexa排名数据调用Google PageRankTechnorati API教程 中介绍过的。应Dianso 朋友的要求,即将在下面的版本中推出 Google , baidu收录查询。如果您还常关注博客的某些数据,您也可以告诉我一下,我争取把它整合到这里来。

另,该插件已经获得Wordpress官方插件目录的审核通过,但由于测试尚未完善,暂未发布到官方目录。希望朋友们使用后把情况反馈一下。待该插件正式发布后,您就可以在后台一键升级了 :)

下载:
Blog-Info-Display BETA 1.0

谢谢支持 !

PHP中的UNZIP(解压缩)

2008年08月7日,星期四

Linux系统一直对ZIP格式提供了良好的支持,在Linux系统中有unzip命令可以解压缩文件包,这对于使用SSH在Dreamhost上搭建博客的朋友是一个十分方便的功能。此外,7ZIP(推荐,开源免费)与WinRAR是常用于Win系统上的ZIP压缩/解压缩软件。在PHP中我们该如何使用压缩和解压缩功能呢?

上回我做了一个一键下载WP主题的插件Get_Theme,代码核心的两部分分别是下载与解压缩。下载比较简单了,通常是用file_get_contents(FILENAME); 这函数或者用 fsockopen 函数下载即可,可解压缩部分就比较复杂点了。由于我对ZIP也算是一无所知,唯一知道的就是PHP似乎内置了对ZIP/UNZIP的支持。后来一查文档才发现,这个功能需要加载额外的DB库,并且有些主机不支持。还好网上提供了很多不需要加载库的解决方案。

第一次用了PHPMYADMIN里面的unzip库。如果有本地用XAMPP搭建测试平台的不妨到 phpMyAdmin/libraries 目录下,找到 unzip.lib.php,里头有个 SimpleUnzip 的UNZIP类,它的作用是将一个ZIP文件解析出一个二维数组,这个数组中每个文件又是一个数组,数组中包含了路径、文件数据、创建时间等信息,解出数组后还要根据每个文件的路径判断是否需要新建文件夹等。后来我用这个类在本地的PHP环境中测试了一下,工作得不错。但当我把它上传到Dreamhost空间进行测试的时候却出现了问题。当我从Wordpress主题站下载主题进行测试解压时,解压后的每个文件均能被正常识别、创建,但文件里的内容都是乱码。我一直不解其中原因。后来我想起7ZIP里面有个似乎可以查看压缩算法的功能,看了一下,算法好像都是 Deflate。而下面的主操作系统信息引起了我的怀疑。我在本地压缩的几个主题包的主操作系统都是 FAT ,而WP主题站下载的主题的主操作系统都是 UNIX ,可能是由于数据的存储方式不同导致了这个问题。 而后我又记起了WP自己拥有的插件升级功能,必然也需要用到UNZIP功能,在WP的文件里找了一下,终于找到了一个UNZIP类,它位于 wp-admin/includes/ 下的 class-pclzip.php 用这个 PclZip 类很容易地解析出了ZIP包的内容,同样需要进行创建文件夹、文件等操作。

这里说一下大概过程,假设有个$archive_files数组,里面有数个$file数组,$file里是真正的每个文件的数据,如$file[filename] 是文件名(包含文件路径,有可能是 file.php 也有可能是 /dir/file.php),$file[content]是文件数据,还有创建时间修改时间等就不列了。

有了文件名首先把它连上绝对路径,用file_exists()或is_dir()的函数判断路径是否存在,不存在就要创建。判断的时候还要注意有可能存在多级文件夹未创建的情况,所以应该先用 explode 函数分解成几个数组,用个for循环把每级目录都判断一遍,不存在则创建。

接下来就是用文件函数创建函数了。

错误的Wordpress固定链接使用方法

2008年07月29日,星期二

前几天在某个博客上看到一篇在Win主机无Rewrite_Mod下使用固定链接(伪静态)不带index.php 的方法。用Win主机搭建Wordpress的博主都知道,要想使用对搜索引擎更为有利的固定链接,只能用这样的方式

http://example.com/index.php/POST_YEAR/POST_DATE/POST_NAME

这实际上还是将参数直接传递到index.php中,只是去掉了“ ? ”而已,对搜索引擎收录是否有利?我对我博客中某个使用这种格式的博客在Google、百度中搜索了一下,基本上是能正常收录的。可见保留 index.php并没有多大问题,当然,链接格式比较难看而已。

这篇文章提到使用404错误页面来构建更漂亮的固定链接,具体做法是

  1. 先在主机控制面板设置404出错页面为 404.php
  2. 创建一个404.php页面,用include(‘index.php’);的方法将请求转至index.php
  3. 在管理后台设置需要的Permalinks格式

其实这是一个极为错误的做法。Win主机在404出错之后,在调用404.php页面之前,会先向浏览器发送404错误信息的,所以就算你的博客无论再怎么显示内容,也被搜索引擎认定为是一个404.php页面的出错提示内容,这样是肯定不会被搜索引擎收录的。

不过还是有方法可以解决的,可以在404页面的头部返回HTTP200成功的代码试试。

  1. header("HTTP/1.1 200 OK");

这个代码我也没有测试过,但按理说是可以的。当然,这是治标不治本的方法,更好的方法就是用LAMP组合了。

Wordpress实用SQL代码

2008年07月29日,星期二

写几个您可能会用到的数据库SQL查询语句。运行SQL语句您需要打开PHPMyAdmin控制面板进行。如有不懂如何运行SQL语句的,请Google一下相关教程或关注我稍后推出的 执行WP常用SQL语句 的插件。

1.您的博客搬家、换域名了?原有的图片、链接怎么办?用这个SQL语句修改一下 :)

  1. UPDATE `wp_posts` SET `post_content`= REPLACE(`post_content`,'OLD_URL','NEW_URL');

用OLD_URL替换您原来的域名,如zz.neekey.com ,把 NEW_URL 替换新的域名 如 photozero.net

2.讨厌WP2.6版本的历史修订功能?用这个SQL语句删除所有的“历史修订”版本

  1. DELETE FROM  `wp_posts` WHERE `post_type` = 'revision'

3.如果觉得上传的图片、文件没必要在数据库里记载,运行这个吧 :)

  1. DELETE FROM  `wp_posts` WHERE `post_type` = 'attachment'

*注意,这里的wp_posts代表您的WP的默认表前缀是 ‘wp_’ (在 wp-config.php 中找到 $table_prefix = ‘wp_’;),若不是默认的 wp_ ,请自行将SQL语句中的`wp_posts`修改为相应的表前缀。

暂时想到这些,以后还有随时添加,有问题欢迎提问!

Pluginlink2Blogroll

2008年07月28日,星期一

Plugin Name: Pluginlink2Blogroll
Plugin URI: http://photozero.net/pluginlink2blogroll
Description: Copy your plugins’ or themes’ Author URI to your Blogroll.
Version: 1.0.0
Author: Neekey
Author URI: http://photozero.net/

Wordpress plugin directory / Download:
http://wordpress.org/extend/plugins/pluginlink2blogroll/

Say thank you to the plugins’ author

Would you want to say thank you to the plugins’ & themes’ author that you are using now?
Yes! Having the A link on your blog homepage is the best way. The plugin can copy all plugins’ and themes’ Author URI to your Blogroll and display on your homepage automatically.


Screenshot

The plugin can copy your plugins’ and themes’ Author URI to your Blogroll(Links).

Easy usage:

Download and unzip the plugin to your plugin folder `/wp-content/plugins/`.
Activate the plugin.
Go to WP-admin -> Settings -> Pluginlink2Blogroll .
Click the button.It will return the succeed message.
Congratulations!.Look at your homepage blogroll or Links manager.Is there some links?
After you done it,you can deactivate or delete the plugin.

  • Chinese(中文)

插件介绍
该插件能将当前使用的插件/主题的作者URL自动添加到您的Blogroll中(可选是否新增分类)。

安装
下载插件,解压 /pluginlink2blogroll/ 文件夹 至您的博客的 /wp-content/plugins/ 插件目录下;
在后台启用该插件;
进入 设置 -> Pluginlink2Blogroll ;
点击按钮;(可选是否新增链接分类)
恭喜!请至您的首页或链接管理页面查看是否增加了插件/主题作者的链接?
为了节约服务器资源,该插件只需一次点击安装后即可禁用或删除。

下载
http://wordpress.org/extend/plugins/pluginlink2blogroll/

—-Bug reports here.Thanks!—

Get_Theme

2008年07月26日,星期六

Get_Theme

Are you tired of downloading, unziping, uploading, testing…the ZIP file just for a wordpress theme? Yes! You need a easy installing themes’ plugin.It named Get_Theme!

Now,you only need a theme URL like

http://wordpress.org/extend/themes/download/dum-dum.1.3.zip

and just one click, you can install a theme easily and quickly!

When you installed the plugin,go to WP-admin -> Settings -> Get_Theme,
put your theme URL on the form , then click Download Theme.
While downloaded and unziped , go to Design menu and activate the theme.

About Get_Theme

The plugin can download the ZIP formatting theme pack from http://wordpress.org/extend/themes/ or other wp themes’ sites quickly, and then UNZIP it into your themes folder.

Screenshot

Download

on Wordpress Plugin Directory »

Installation

  1. Upload the folder `/get-theme/` to the `/wp-content/plugins/` directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
    Go to WP-admin -> Settings -> Get_Theme and do it.

Chinese|中文说明

Get_Theme: 该插件能自动从Wordpress官方主题目录或其他主题网站下载ZIP格式的主题包,并解压缩至主题目录。

安装:下载压缩包,解压 /get-theme/文件夹至 /wp-content/plugins/插件目录下,启用该插件。

使用:后台->设置->Get_Theme,将ZIP文件的URL输入框中,点击’Download Theme’,(依网络状况及文件大小约1-60秒)提示成功后在主题选项中启用该主题。

Wordpress新插件Go2Wap发布

2008年07月19日,星期六

Go2Wap插件是专为提供WAP访问的Wordpress插件设计的。当手机访客输入 photozero.net 访问首页时,自动跳转至 photozero.net/wap/index.php 或自定义的网址(如:wap.feedsky.com/photozero)。建议在安装该插件前先安装TangGaowei提供的WP-T-WAP插件,以支持从Wap访问,或使用类似插件。

如果您需要转跳到由Feedsky提供的WAP服务( http://wap.feedsky.com/yourname )或WAP目录名不为 /wap/ ,在安装前请先用文本编辑器打开插件 go2wap.php 将

  1. $go2url = get_bloginfo('url') . '/wap/index.php';

更改为

  1. $go2url = 'http://wap.feedsky.com/yourname';

(将引号内的内容改为您需要的URL。)

插件主页,下载,安装:http://photozero.net/go2wap/
Document,Download,Setup:http://photozero.net/go2wap/