<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kangzj &#187; 插件</title>
	<atom:link href="http://kangzj.net/tag/%e6%8f%92%e4%bb%b6/feed/" rel="self" type="application/rss+xml" />
	<link>http://kangzj.net</link>
	<description>记录技术和生活~</description>
	<lastBuildDate>Thu, 09 Feb 2012 00:57:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>对朋友隐藏广告-Ozh&#8217; Who Sees Ads</title>
		<link>http://kangzj.net/ozh-who-sees-ads-hide-ads-for-friends/</link>
		<comments>http://kangzj.net/ozh-who-sees-ads-hide-ads-for-friends/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 02:18:12 +0000</pubDate>
		<dc:creator>kangzj</dc:creator>
				<category><![CDATA[独立博客]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google adsense]]></category>
		<category><![CDATA[Ozh' Who Sees Ads]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://kangzj.net/?p=1117</guid>
		<description><![CDATA[介绍一个对常来的朋友隐藏广告插件Ozh' Who Sees Ads的规则设置和调用方法，可以提高广告单价，增加广告收入。]]></description>
			<content:encoded><![CDATA[<p>为什么要对朋友隐藏广告呢：</p>
<p><strong>第一，减少展示次数，提高广告单价</strong>。常来的访客一般来说是不会点击广告的，他们对广告已经熟视无睹，过多的展示会降低每次点击的单价，对朋友隐藏广告有现实的必要性。<br />
<strong>第二，界面对常来的朋友更加友好。</strong>方便博友交流，去除广告的干扰，界面更清爽。</p>
<ul></ul>
<p>下面主角登场了，这款插件叫做：<strong>Ozh&#8217; Who Sees Ads</strong>。</p>
<p>怎样安装就不介绍了，下面介绍下它的使用。</p>
<p><span id="more-1117"></span></p>
<p><a href="http://kangzj.net/wp-content/uploads/images/200909/2a70a33b4e30_142A1/whoseeads.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="who-see-ads" src="http://kangzj.net/wp-content/uploads/images/200909/2a70a33b4e30_142A1/whoseeads_thumb.jpg" border="0" alt="who-see-ads" width="283" height="240" /></a> 可以设置多种规则来控制广告的显示包括：</p>
<ol>
<li>对搜索引擎来的访客是否显示广告</li>
<li>经常来的用户是否显示广告</li>
<li>发布超过多长时间的文章显示广告</li>
<li>是否对已登录用户显示广告</li>
<li>……</li>
</ol>
<p>各个规则可以调整顺序，“Who Sees Ads”从第一条规则开始匹配，找到匹配就执行相应策略。下面是我的显示广告的规则：</p>
<p><a href="http://kangzj.net/wp-content/uploads/images/200909/2a70a33b4e30_142A1/mywhoseesadsrules.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="my-who-sees-ads-rules" src="http://kangzj.net/wp-content/uploads/images/200909/2a70a33b4e30_142A1/mywhoseesadsrules_thumb.jpg" border="0" alt="my-who-sees-ads-rules" width="298" height="86" /></a> 效果是：</p>
<blockquote><p><strong>如果是从搜索引擎来的一定显示，如果是“常来用户”那么不显示，其它情况全部显示。</strong></p></blockquote>
<p>规则设置完毕之后，可以用下面的代码调用（postAd是广告的名称）：</p>
<p>在模板调用：<tt>&lt;?php wp_ozh_wsa("postAd");?&gt;</tt></p>
<p><tt>在编辑器调用：</tt><tt>&lt;!--wsa:postAd--&gt;</tt></p>
<p>设置界面下方还有其它设置，比如定义“常来朋友”和“点击保护”；</p>
<ul>
<li>“常来朋友”：定义在m天之内有m个PV以上的为“常来朋友”；</li>
<li>“点击保护”：为登录用户保护广告不被误点击以防止违反Google的协议。</li>
</ul>
<p><em>我这几个名词翻译的真烂。</em></p>
<p><span style="color: #800000;"> PS：</span>如果安装了页面静态化的插件，这个插件会失去作用。折中的考虑可以把DB Cache+Widget Cache配合使用，既可以加速，这个插件也不会失效，我的博客现在就是这样的。</p>
<p style='text-align:left'>&copy; 2009, <a href='http://kangzj.net'>kangzj</a>. 版权所有.  </p>
<hr />
<p><small>© kangzj for <a href="http://kangzj.net">Kangzj</a>, 2009. |
<a href="http://kangzj.net/ozh-who-sees-ads-hide-ads-for-friends/">http://kangzj.net/ozh-who-sees-ads-hide-ads-for-friends/</a> |
<a href="http://kangzj.net/ozh-who-sees-ads-hide-ads-for-friends/#comments">53 条评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://kangzj.net/ozh-who-sees-ads-hide-ads-for-friends/&title=对朋友隐藏广告-Ozh&#8217; Who Sees Ads">del.icio.us</a>
<br/>
Post tags: <a href="http://kangzj.net/tag/google/" rel="tag">google</a>, <a href="http://kangzj.net/tag/google-adsense/" rel="tag">google adsense</a>, <a href="http://kangzj.net/tag/ozh-who-sees-ads/" rel="tag">Ozh' Who Sees Ads</a>, <a href="http://kangzj.net/tag/php/" rel="tag">php</a>, <a href="http://kangzj.net/tag/wordpress/" rel="tag">wordpress</a>, <a href="http://kangzj.net/tag/%e6%8f%92%e4%bb%b6/" rel="tag">插件</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://kangzj.net/ozh-who-sees-ads-hide-ads-for-friends/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
		<item>
		<title>php代码层次加速WordPress</title>
		<link>http://kangzj.net/to-accelerate-wordpress-on-php-level/</link>
		<comments>http://kangzj.net/to-accelerate-wordpress-on-php-level/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 06:21:45 +0000</pubDate>
		<dc:creator>kangzj</dc:creator>
				<category><![CDATA[独立博客]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[GZIP Output]]></category>
		<category><![CDATA[gzippy]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://kangzj.net/?p=1083</guid>
		<description><![CDATA[所谓“php代码”是指php执行效率，执行查询数量上的优化。我将方法归纳了几点，加速你的WordPress!]]></description>
			<content:encoded><![CDATA[<p>所谓“php代码”是指php执行效率，执行查询数量上的优化。我将方法归纳以下几点：</p>
<h3>1. 控制插件数量</h3>
<p>做过插件的朋友都知道，插件是通过添加一系列的filer或者action来实现功能的。比如大家很熟悉的All in one SEO，每个页面加载title完之后便会调用它的代码以显示页面的描述、关键字等信息。如果插件很多的话，每次调用都会有很大一个调用列表，程序执行时间自然会变得较长。</p>
<p>所以，控制插件数量在加速WordPress上有很大的作用（当然缓存类的插件除外）。看看大家都在用什么插件：</p>
<ol>
<li>万戈：<a href="http://www.life-studio.cn/my-wordpress-plugins-show.html" target="_blank">《我的 WordPress 插件秀》</a></li>
<li>蓝冰：<a href="http://vvvvvv.us/567.html" target="_blank">《我正在使用中的WP插件》</a>，蓝冰说换了好多了，权当参考就得了</li>
<li>Kangzj：《Kangzj正在使用的插件们》coming soon&#8230;</li>
</ol>
<p>万戈同学属加速狂类型的，他的原则是能不用插件则不用插件。对于这一点我是部分认同的部分反对的，个人觉得对于用插件应该：</p>
<ul>
<li>能修改主题代码可以实现的，可以不用插件实现（优点是速度相对快，缺点是换主题相当不方便）；如果要修改核心代码者，绝对要用插件实现（否则以后升级WordPress那是相当的麻烦）。</li>
</ul>
<p><span id="more-1083"></span></p>
<h3>2. 使用缓存插件</h3>
<p>缓存插件有多种，按按照缓存内容的不同可以分为三类：数据库查询缓存、静态页面缓存、部分页面缓存。下面介绍几个典型的缓存插件，大家可以参考使用。</p>
<h4>2.1. 数据库查询缓存：DB Cache</h4>
<p>DB Cache缓存数据库查询到文件中，减少数据库查询以达到加速的目的。</p>
<h4>2.2. 静态页面缓存：WP Super Cache / cos html cache</h4>
<p>WP Super Cache：WP Cach和Super Cache结合的产物，页面缓存用得最多的应该就是这个插件了。功能强大，还提供gzip压缩。</p>
<p>Cos Html Cache：国人cosbeta作品，缓存页面以加速。</p>
<h4>2.3. 部分页面缓存：WP Widget Cache</h4>
<p>WP Widget Cache：仅缓存Widget内容，对于Widget占用大量资源的情况很有效。</p>
<p>同学们可能会问，已经有了强大的静态页面缓存，为什么还要有数据库查询缓存、Widget Cache等这样的缓存插件呢？其实答案很简单，有部分的插件必须在动态页面才可以执行，在静态页面缓存中发挥不了作用，这样的时候DB Cache和Widget Cache就能派上用场了。举个例子：Ozh&#8217; Who Sees Ads，这个插件根据来源不同决定是否显示广告，只对从搜索引擎来的一次性访客显示广告（既经常访问的用户隐藏烦人的广告，又可以减少展示次数以提高单价）。</p>
<h3>3. 优化主题</h3>
<p>主题中有大量的类似于</p>
<pre lang="php">&lt; ?php bloginfo('charset'); ?&gt;</pre>
<p>的代码，可以用直接用实际值来替换，以减少代码的量以提高速度。</p>
<h3>4. 启用Gzip压缩</h3>
<p>WordPress2.5以前内置Gzip功能，后来去除了。启用Gzip压缩可以大大减少传输数据量（通常压缩率可以达到70%以上）。</p>
<ol>
<li><strong><a href="http://louishan.com/">Louis Han</a></strong>：《<a href="http://louishan.com/articles/enable-gzip-compress-for-wordpress-2-8.html">WordPress 2.8开启Gzip压缩功能</a>》，不但页面可以gzip，css，js也可以。</li>
<li>可用插件：GZIP Output 、CSS Compress、WP Super Cache内置。</li>
</ol>
<p>设置完毕之后可以到<a href="http://www.gidnetwork.com/tools/gzip-test.php">Gzip 检测页面</a>进行检测，看设置是否成功。</p>
<h3>5. 看看加速效果</h3>
<p>打开主题底部模板footer.php，加入这几行：</p>
<pre lang="php">Processed in &lt; ?php timer_stop(1); ?&gt; second(s), &lt; ?php echo get_num_queries(); ?&gt; queries.</pre>
<p><span style="color: #800000;"><strong>便可以看到优化的结果了，<em>数据查询</em>和<em>处理时间</em>是不是都减少了不少呢？</strong></span></p>
<p><strong><span style="color: #800000;">做完了这些，你的WordPress是否有“<em>飞一样的感觉</em>”了呢？</span></strong></p>
<p style='text-align:left'>&copy; 2009, <a href='http://kangzj.net'>kangzj</a>. 版权所有.  </p>
<hr />
<p><small>© kangzj for <a href="http://kangzj.net">Kangzj</a>, 2009. |
<a href="http://kangzj.net/to-accelerate-wordpress-on-php-level/">http://kangzj.net/to-accelerate-wordpress-on-php-level/</a> |
<a href="http://kangzj.net/to-accelerate-wordpress-on-php-level/#comments">13 条评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://kangzj.net/to-accelerate-wordpress-on-php-level/&title=php代码层次加速WordPress">del.icio.us</a>
<br/>
Post tags: <a href="http://kangzj.net/tag/gzip/" rel="tag">gzip</a>, <a href="http://kangzj.net/tag/gzip-output/" rel="tag">GZIP Output</a>, <a href="http://kangzj.net/tag/gzippy/" rel="tag">gzippy</a>, <a href="http://kangzj.net/tag/php/" rel="tag">php</a>, <a href="http://kangzj.net/tag/wordpress/" rel="tag">wordpress</a>, <a href="http://kangzj.net/tag/%e4%b8%bb%e9%a2%98/" rel="tag">主题</a>, <a href="http://kangzj.net/tag/%e6%8f%92%e4%bb%b6/" rel="tag">插件</a>, <a href="http://kangzj.net/tag/%e7%bc%93%e5%ad%98/" rel="tag">缓存</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://kangzj.net/to-accelerate-wordpress-on-php-level/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>今天竟然把博客数据库删除了&#8230;</title>
		<link>http://kangzj.net/blog-database-deleted-and-rebuild/</link>
		<comments>http://kangzj.net/blog-database-deleted-and-rebuild/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 16:02:11 +0000</pubDate>
		<dc:creator>kangzj</dc:creator>
				<category><![CDATA[独立博客]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[误删]]></category>

		<guid isPermaLink="false">http://kangzj.net/?p=1045</guid>
		<description><![CDATA[瞥见几个没用的数据表，就顺手点了下删除，结果点成了删除数据库，于是我博客整个数据库就这么over了！！]]></description>
			<content:encoded><![CDATA[<p>今天装水煮鱼的thread twitter，怎么弄都不行，最后竟然把mysql给搞死了。重启mysql数次之后，用phpmyadmin看看到底怎么回事。瞥见几个没用的数据表，就顺手点了下删除，结果点成了删除数据库，于是我博客整个数据库就这么over了！！</p>
<p>搞不懂为什么 phpmyadmin没有删除提示，以前都是有的啊！？？@@&#8211; <img src='http://kangzj.net/wp-includes/images/smilies/icon_cry.gif' alt=':cry:' class='wp-smiley' /> </p>
<p>好在10.1有备份，也还好有feedburner和Google Reader里的存档。于是把这几天发的几篇文章贴回来，重新加固定链接、标签、摘要什么的，把这几篇文章复活了（定时发布的文章算是永远byebye了）。可惜的是文章的留言没法复活了（在邮箱里还有记录）。</p>
<p>悲剧，太悲剧了，我竟然会犯这样的错误 <img src='http://kangzj.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  ，为那些失去的留言默哀&#8230;大家辛辛苦苦的留言没有了，对不住大家。</p>
<p><span style="color: #993366;"><span style="text-decoration: underline;"><em><strong>每天备份数据库，不要在无意识状态下操作数据库，操作数据库的话，先备份</strong>。</em></span></span>一定要成为死的纪律，否则一旦误操作，后果不堪设想。大家以我为鉴吧。</p>
<p>到现在还是搞不懂mysql死掉是我的问题还是水煮鱼的插件的问题。唉，算了，不折腾了，休息下吧。</p>
<p style='text-align:left'>&copy; 2009, <a href='http://kangzj.net'>kangzj</a>. 版权所有.  </p>
<hr />
<p><small>© kangzj for <a href="http://kangzj.net">Kangzj</a>, 2009. |
<a href="http://kangzj.net/blog-database-deleted-and-rebuild/">http://kangzj.net/blog-database-deleted-and-rebuild/</a> |
<a href="http://kangzj.net/blog-database-deleted-and-rebuild/#comments">48 条评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://kangzj.net/blog-database-deleted-and-rebuild/&title=今天竟然把博客数据库删除了&#8230;">del.icio.us</a>
<br/>
Post tags: <a href="http://kangzj.net/tag/phpmyadmin/" rel="tag">phpmyadmin</a>, <a href="http://kangzj.net/tag/wordpress/" rel="tag">wordpress</a>, <a href="http://kangzj.net/tag/%e6%8f%92%e4%bb%b6/" rel="tag">插件</a>, <a href="http://kangzj.net/tag/%e8%af%af%e5%88%a0/" rel="tag">误删</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://kangzj.net/blog-database-deleted-and-rebuild/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
		<item>
		<title>WordPress插件制作(二)</title>
		<link>http://kangzj.net/wordpress-plugin-tutorial-2/</link>
		<comments>http://kangzj.net/wordpress-plugin-tutorial-2/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 06:20:25 +0000</pubDate>
		<dc:creator>kangzj</dc:creator>
				<category><![CDATA[独立博客]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress插件制作]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[插件制作]]></category>

		<guid isPermaLink="false">http://kangzj.net/?p=534</guid>
		<description><![CDATA[介绍了WordPress中插件可以利用的钩子和模板标记的方法来实现，插件的数据向数据库中保存的方法，WordPress插件制作的一些建议等]]></description>
			<content:encoded><![CDATA[<h3>3. 开始编程实现你的插件</h3>
<p>上面把流程交待得很清楚了，下面该让你的插件做点事情了。这一部分包含一些插件开发的基本的原则，教给你如何让你的插件完成几个不同的任务。</p>
<h4>3.1 WordPress插件钩子</h4>
<p>很多插件通过连接一个或多个WordPress钩子来完成自己的功能。插件钩子工作的原理是，在WordPress运行的某些时刻，它会去检查是不是有插件注册了函数，如果有的话，就会运行这个插件的函数。这些函数改变了WordPress默认的功能。</p>
<p><span id="more-534"></span></p>
<p>比如说，在WordPress输出页面的title之前，它会先检查一个是不是有插件注册了“the_title”的<strong>“filter”钩子</strong>。如果有的话，title的文本就会通过一个个的函数处理，最后再输出结果。所以，如果你的插件想改变title的话，注册一个“the_title”的filter钩子就可以了。</p>
<p>另外一种是<strong>“action”钩子</strong>，比如“wp_footer”。在HTML页面快要执行完的时候它会检查是不是有插件注册了“wp_footer”的“action”钩子，如果有的话，就一个一个地执行。</p>
<p>你可以在<a href="http://codex.wordpress.org/Plugin_API" target="_blank">Plugin API</a>中找到更多的这种“filter”和“action”类型的钩子。如果你想在WordPress中的某一部分使用钩子，你也可以向开发者建议添加一个这样的钩子。</p>
<h4>3.2 模板标记</h4>
<p>另外一种利用插件增强WordPress功能的方式是创建模板标记。使用你插件的人可以把这些标记加入到WordPress的模板里，可能放在sidebar等合适的地方。比如，一个地理位置的插件，定义一个放在sidebar里的geotag_list_states()，可以列所有这篇文章相关的“州”，点击这些“州”的时候，所有相关的文章会被列出来。</p>
<p>要定义一个模板标记，只要写一个PHP函数和文档，然后放在插件的主PHP文件中或者你插件的主页上举例一个例子说明应该往模板里加什么东西，怎样加，并在代码前后加上&lt;?php  ?&gt;。</p>
<h4>3.3 把插件的数据保存到数据库</h4>
<p>大部分的WordPress插件需要保存一些数据，这些数据可以保存在WordPress的数据库里，这里有两种基本的、把插件数据保存到WordPress数据库的方法：</p>
<p>1.用WordPress的“option”机制（下面会详述）。这种方法可以保存较少量的、分散的数据，是那种一开始让用户输入的选项形式的，以后基本不会变的数据。</p>
<p>2. Post Meta。对和单独文章、页面、附件相关的数据比较合适。可以查看：<a href="http://codex.wordpress.org/Function_Reference/post_meta_Function_Examples" target="_blank">post_meta函数示例</a>。</p>
<p>3. 新建一个数据表。这种方式适用于那些和文章、页面、评论等相关的数据，它们会随时间推移而增长。可以看一下这里“<a href="http://codex.wordpress.org/Creating_Tables_with_Plugins" target="_blank">用插件创制数据表</a>”。</p>
<h4>3.4 WordPress的option机制</h4>
<p>点击这里可查看怎么<a href="http://codex.wordpress.org/Creating_Options_Pages" target="_blank">创建可以自动地帮助你把插件的配制信息保存的插件管理面板</a>。</p>
<p>WordPress有一套在数据库中保存、更改、读取独立的、有名字的数据（”options”）的机制。option的值可以是string, array或者php对象（在存储前会被序列化，或者转化成string）。option的名字是string类型，必须唯一，这样才能不和其它的WordPress插件冲突。</p>
<p>下面是你的插件调用WordPress需要用到了的主要的函数：</p>
<pre lang="php">add_option($name, $value, $deprecated, $autoload);</pre>
<p>“no”$name和$value当然就是你的option的名字和值啦；</p>
<p>$deprecated可选，WordPress已经不用了，可以传一个空值。</p>
<p>$autoload也是可选（&#8217;yes&#8217; or &#8216;），默认为yes，即会被<tt>get_alloptions函数自动加载。</tt></p>
<pre lang="php">get_option($option);</pre>
<p><tt>从数据库中读取$option的值。</tt></p>
<pre lang="php">update_option($option_name, $newvalue);</pre>
<p><tt>这个就不用解释了。</tt></p>
<h4>3.5 插件设置页面</h4>
<p>这部分将在以后文章中详述。</p>
<h3>4. 国际化你的插件</h3>
<p>做好了你的插件之后，你就可以考虑国际化了，让更多的人可以使用这个插件。在软件安装中，这叫做本地化，也就是把软件中使用的语言翻译成不同的语言。这里有相关的内容：<a title="I18n for WordPress Developers" href="http://codex.wordpress.org/I18n_for_WordPress_Developers">I18n for WordPress Developers</a>。</p>
<h3>5. 插件开发建议</h3>
<ol>
<li>WordPress的插件应该遵循“WordPress Coding Stardards”。也要考虑程序中的注释的标准。</li>
<li>你插件中的函数名不能和WordPress核心的函数或者其它WordPress插件的函数有重名。可以通过给你的函数加一个前缀，也可以在类中定义你的函数来解决这个问题。</li>
<li>代码中不要把WordPress前缀写死成“wp_”，要写成$wpdb-&gt;prefix。</li>
<li>读数据库成本低，但是写却很高。所以尽量减少向数据写东西的次数。</li>
<li>只“Select”你需要的字段。不要用“Select *”这样的语句，不要让你的插件把整个WordPress拖慢。</li>
<li>把你插件中所有的错误修正，把PHP的Debug打开，在wp_config.php中添加<tt>define('WP_DEBUG', true)，找出所有的error和warning，并修改之。</tt></li>
</ol>
<p><tt>本文翻译自：http://codex.wordpress.org/Writing_a_Plugin</tt></p>
<p><tt>PS: <a href="http://abitno.linpie.com/abitno-wordpress-plugin.html" target="_blank">ABitNo会做插件，让他教教你做插件:-)</a></tt></p>
<p style='text-align:left'>&copy; 2009, <a href='http://kangzj.net'>kangzj</a>. 版权所有.  </p>
<hr />
<p><small>© kangzj for <a href="http://kangzj.net">Kangzj</a>, 2009. |
<a href="http://kangzj.net/wordpress-plugin-tutorial-2/">http://kangzj.net/wordpress-plugin-tutorial-2/</a> |
<a href="http://kangzj.net/wordpress-plugin-tutorial-2/#comments">8 条评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://kangzj.net/wordpress-plugin-tutorial-2/&title=WordPress插件制作(二)">del.icio.us</a>
<br/>
Post tags: <a href="http://kangzj.net/tag/php/" rel="tag">php</a>, <a href="http://kangzj.net/tag/wordpress/" rel="tag">wordpress</a>, <a href="http://kangzj.net/tag/wordpress%e6%8f%92%e4%bb%b6%e5%88%b6%e4%bd%9c/" rel="tag">wordpress插件制作</a>, <a href="http://kangzj.net/tag/%e6%8f%92%e4%bb%b6/" rel="tag">插件</a>, <a href="http://kangzj.net/tag/%e6%8f%92%e4%bb%b6%e5%88%b6%e4%bd%9c/" rel="tag">插件制作</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://kangzj.net/wordpress-plugin-tutorial-2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>WordPress插件制作(一)</title>
		<link>http://kangzj.net/wordpress-plugin-tutorial-1/</link>
		<comments>http://kangzj.net/wordpress-plugin-tutorial-1/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 14:06:33 +0000</pubDate>
		<dc:creator>kangzj</dc:creator>
				<category><![CDATA[独立博客]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress插件制作]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[插件制作]]></category>

		<guid isPermaLink="false">http://kangzj.net/?p=473</guid>
		<description><![CDATA[WordPress插件制作教程的第一部分，主要介绍制作插件的整体流程，包括插件名、文件和文件存放的位置，插件主页，插件PHP文件的文件头的编写等。]]></description>
			<content:encoded><![CDATA[<h3>1. 简介</h3>
<p>WordPress插件使得WordPress变得扩展性强、易修改和个性化。不用修改WordPress的核心，你只要简单的加几个插件，很多功能就能够轻松实现。下面给出WordPress插件的定义：</p>
<p><strong>WordPress插件</strong>：它是用PHP编写的一个程序或一个或者几个函数的组合，它利用WordPress提供的API和WordPress本身的一些调用点，给WordPress增加新的功能或者特性。</p>
<p>希望WordPress有新功能的或者想修改一下功它的某个功能？你所要做的第一件事就是从WordPress大量的插件中寻找，有没有人已经制作过这样的插件，如果有，直接用就好了。如果没有，这篇文章可以指导你做你自己的WordPress插件。<br />
<span id="more-473"></span><br />
<em>这篇文章假设你对WordPress的工作方式和PHP编程比较了解了。</em></p>
<h3>2. 创建一个新的插件</h3>
<p>这一部分会把插件制作的步骤都涉及到了，你只要跟着做就好了，同时也告诉你创建一个新的插件时应该考虑的东西。</p>
<h4>2.1 插件名、文件和文件存放的位置</h4>
<h5>2.1.1 插件名</h5>
<p>做插件的第一步当然是考虑清楚你的插件的功能，给你的插件起个名字。到WordPress官方网站和其它资源查找下有没有相同的名字，当然你也可以Google一下，以保证你的插件的名字是唯一的。很多插件的开发者以插件的功能给插件命名。比如说，一个跟“天气”相关的插件很有可能起一个含有”Weather”的名字。名字可由多个单词组成。</p>
<h5>2.2.2 插件的文件</h5>
<p>下一步就是创建插件的PHP文件。例如，你的插件名字是“Fabulous Functionality”，你可以给你的PHP文件起一个名字“fabfunc.php”。和插件的名字一个道理，这个PHP文件也要起一个唯一的名字。用你插件的人会把你的文件放到plugin目录里，也就是/wp-content/plugins/，所以任何两个插件的PHP文件都不能有相同的名字，否则会引起冲突和误会。</p>
<p>上面是你的插件只有一个文件的情况。你也可以把你的PHP文件拆分成多个文件。你的WordPress插件应该至少含有一个PHP文件，也可以有JavaScript，Css，图像，语言等文件。如果有多个文件，就把他们全都放到一个目录下面，这个目录的名字也要是唯一的。告诉你的插件的使用者，把整个文件夹上传到/wp-content/plugins/就可以了。</p>
<p><em>下面所提到的“插件的PHP文件”是指插件的主要的PHP文件，有可能在/wp-content/plugins/中，也有可以在这里面的一个子目录中。</em></p>
<h5>2.2.3 Readme文件</h5>
<p>如果你想把你的插件上传到<a href="http://wordpress.org/extend/plugins/">http://wordpress.org/extend/plugins/</a>中，你应该按标准的格式创建一个Readme文件，放到你的插件文件中。这里介绍Readme文件的格式：<a title="http://wordpress.org/extend/plugins/about/readme.txt" href="http://wordpress.org/extend/plugins/about/readme.txt">http://wordpress.org/extend/plugins/about/readme.txt</a></p>
<h4>2.2 插件主页</h4>
<p>为你的插件创建一个主页是很有用处的，你可以在这个主页上介绍如何安装你的插件，插件的功能，插件兼容的WordPress的版本，插件不同版本之间功能的变化，怎么使用插件等等。</p>
<h4>2.3 PHP文件的文件头信息</h4>
<p>现在到了写点东西到你插件的PHP文件中的时候了。</p>
<h5>2.3.1 标准的插件信息头</h5>
<p>你插件的主要的PHP文件的头部，必须写上<strong>标准的插件信息</strong>。这个插件信息头让WordPress找到你的插件，并把你的插件加入到插件管理中去，这样这个插件才能被激活、加载和运行。没有这个插件信息头，你的插件就不会被识别，也完全不会起任何作用。下面是插件信息头的格式：</p>
<pre lang="php">
< ?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
*/
?></pre>
<p>这些信息中，如果不写“Plugin Name”WordPress就无法识别插件。其它的几项信息在插件管理的页面会有显示。信息的顺序是没有要求的。</p>
<h5>2.3.2 授权信息</h5>
<p>通常大家就直接用标准的授权信息当作自己的授权信息。很多的插件用得就是GPL。加入下面的文字，可以简要的说明GPL：</p>
<pre lang="php">< ?php
/*  Copyright YEAR  PLUGIN_AUTHOR_NAME  (email : PLUGIN AUTHOR EMAIL)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
?></pre>
<h3>3. 编程实现你的插件</h3>
<p>现在到了让你的插件做点实事的时候了。这部分包含一些开发当中的基本的常识，阐明了要完成你的插件应该做的几项工作。 </p>
<p><a href="http://kangzj.net/wordpress-plugin-tutorial-2/" target="_blank">继续阅读 =&gt;  WordPress插件制作(二) </a></p>
<p style='text-align:left'>&copy; 2009, <a href='http://kangzj.net'>kangzj</a>. 版权所有.  </p>
<hr />
<p><small>© kangzj for <a href="http://kangzj.net">Kangzj</a>, 2009. |
<a href="http://kangzj.net/wordpress-plugin-tutorial-1/">http://kangzj.net/wordpress-plugin-tutorial-1/</a> |
<a href="http://kangzj.net/wordpress-plugin-tutorial-1/#comments">27 条评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://kangzj.net/wordpress-plugin-tutorial-1/&title=WordPress插件制作(一)">del.icio.us</a>
<br/>
Post tags: <a href="http://kangzj.net/tag/php/" rel="tag">php</a>, <a href="http://kangzj.net/tag/wordpress/" rel="tag">wordpress</a>, <a href="http://kangzj.net/tag/wordpress%e6%8f%92%e4%bb%b6%e5%88%b6%e4%bd%9c/" rel="tag">wordpress插件制作</a>, <a href="http://kangzj.net/tag/%e6%8f%92%e4%bb%b6/" rel="tag">插件</a>, <a href="http://kangzj.net/tag/%e6%8f%92%e4%bb%b6%e5%88%b6%e4%bd%9c/" rel="tag">插件制作</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://kangzj.net/wordpress-plugin-tutorial-1/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
	</channel>
</rss>

