WordPress 站点架设手记,你也可能会用到的插件

说来还得益于工作中的内容就有要维护着一个 WordPress 的网站,必要时开发些插件。之前用 Joomla 架过一个站点(http://www.scalawork.com),懂得了 WordPress 的精练之后才晓得 Joomla 是何等的复杂。当然功能上 WordPress 与 Joomla 恐怕还是有些差距,但适合自己就是最好的。其间对 Dropal 也略有了解,仍不妨碍我最终选择了用 WordPress,当然对它的熟悉程度也是最重要的一点。

辛苦忙活了一阵总有不少收获,顺便记下了架设这个 WordPress 站点的过程。首先,要买个空间和域名自是不必多说,要想省事或是对某些行规反感的话就买国外的吧,代价就是有点慢。恰如此处,浏览时多加点耐心哦,看来应该是主机的缘故,得换到西部某个机房去试试。 阅读全文 >>

让 WordPress 的 Rss 显示更多或所有的日志

默认 WordPress 提供的 RSS 链接只能获得最近的十篇日志,如果想得到更多,或是用于某种目的而想通过 RSS 获得所有的日志,那恐怕就得做些手脚了,或许还有更简单的办法,只是我这里改了下源代码中的 limit 查询参数。

关于 WordPress 的 Feed 请参考:http://codex.wordpress.org/WordPress_Feeds,用以下代码可以输出你实际的 RSS 的 URL:

URL for RDF/RSS 1.0 feed      <?php bloginfo('rdf_url'); ?>
URL for RSS 0.92 feed         <?php bloginfo('rss_url'); ?>
URL for RSS 2.0 feed          <?php bloginfo('rss2_url'); ?>
URL for Atom feed             <?php bloginfo('atom_url'); ?>
URL for comments RSS 2.0 feed <?php bloginfo('comments_rss2_url'); ?>

在我的机器上永久链接后是用 http://unmi/feed/ 来访问 rss2,模板将会用 wp-includes/feed-rss2.php 文件。要说定位到这段代码还真不简单。 阅读全文 >>

WordPress 应用中如何实现 URL 内部重定向

这里要说的 URL 重定向不是指地址栏输入一个 url a,然后地址栏的 url a 被变为 url b 那样的重定向,而是指 url 不变的重定向,也就是重定向过程在服务端默默的帮你完成了。

这个需求是源于开发 WordPress 插件时,然望在前端仅用 http://unmi/dosth 这种形式来访问自己的插件程序,而不是用 http:/unmi/wp-content/my-wordpress-plugin/dosth.php 这么一长串不友好的 URL。

有三种办法:

1. WordPress 是极力推荐与 Apache 搭配使用,所以可以在 Apache 的配置文件中用 Alias 指令。其实一开始我是想在应用的 .htaccess 文件中加指令,使用 mod_rewrite 模块来实现 URL 内部重定向功能,但碰到一些问题,所以暂时先在 httpd.conf 中加过 Alias 指定别名来实现过: 阅读全文 >>

在 WordPress 插件管理页面中引入样式或脚本文件

在开发 WordPress 插件时,你当然可以在每一个你需要用到样式或脚本文件的页面像传统方式那样把它们引入,比如:

有个插件 hello-unmi, 要在管理页面中引入插件目录的 include 文件夹里的 admin-style.css 和 admin-core.js 文件,可以在每个要用到它们的页面都写上:

页面多了会是个麻烦,要说问题也不大,不过我们既然在 WordPress 的插件体系中,应该考虑好利用上下文给我们带来的便利。可以在 'admin_enqueue_scripts' 的 action 扩展中去引入,这样我们就只要写一次就能为所有(或特定)的管理页面引入想要的样式和脚本文件. 阅读全文 >>

WordPress Rewrite / Permalink内部过程分析[转]

本文说明WP 对URL rewrite并生成当前请求的过程.

关于Query Vars这是WordPress全部代码中最重要的变量,所谓的query vars是一系列变量集合. WP通过解析URL设定query vars, 并通过分析query vars值决定显示那些文章,设定标志位等.所谓标志位是WP_Query类中一系列$is_xxx形式布尔成员变量,所有的is_xxx()形式template tag实际上都是返回$wp_query里对应成员变量值. 举例而言,如果当前页面是单篇文章, 则p这个Query Var(以下简称变量)值不为空.(在WP类里空的query var根本不存在,而WP_Query类里如果对应name的query var没有设置,$wp_query->query_vars['varname']被填充为空值), 如果当前为搜索页, s变量值则为搜索关键字. 如果p和page两个变量都不为空值, 则当前为单篇文章分页页面, 依次类推. Query Vars在WP类($wp)里根据WP_Rewrite里的rewrite规则生成, 在WP_Query($wp_query)类里这些变量被用来建立主循环. 阅读全文 >>

自定义 WordPress 插件如何对记录进行分页

在我们为 WordPress 开发插件的时候,在涉及到列表显示许多记录的时候,肯定要考虑分页显示的问题。自然的,不管是简单性也好,还是统一性,直接参考下 WordPress 自己是怎么实现的,看看 Posts 或 User 管理页面的实现代码,比如 User 管理页面的实现代码在 wp-admin/includes/user.php 中的 WP_User_Search 类。默认实现其实是很好看的,如:。那我们如何在自己的插件里实现这样的效果呢,比如像这个: 阅读全文 >>

打造自己的WordPress侧边栏[转]

倘若自己把一些需要的widget直接写进WordPress侧边栏sidebar.php里,在打开网页时,会比在后台添加的widget速度要快一些。道理很简单,如果在后台添加那些widget, 相当于dynamic_sidebar,然后去get一些option之类的函数,会比直接写进sidebar.php里多一些查询和调用的过程。
而且,大家也发现了,在后台的提供的widget里并非都是你想要的。所以有时候自己写一些widget,还是蛮有趣的。

好比说,我现在想加一个友情链接(Blogroll)在侧边栏里,该怎么去写呢? 很简单,在模板的sidebar.php里加上:

关于 WordPress Shortcode 以及在 the_content 之外使用

WordPress 中可以用 Shortcode 来创建宏代码,并且是高度可定制的,例如,有 PHP 代码:

那么只要在你的 post 中输入,[bartag foo="foo-value"],显示该文章的时候此处就被 bartag_func() 函数替换为:foo = foo-value。来个更实用的,比如欲定义一个[unmi_blog] 的标签,定义代码写成如下:

那么在文章中的 [unmi_blog] 的会显示为:隔叶黄莺 Unmi Blog

还能用 Shortcode 打照更强大的自定义标签,如 [YouTube id='1234'] 就显示 id=1234 的视频等等,只是 Shortcode 似乎又太局限了。在文中 http://codex.wordpress.org/Shortcode_API 详细介绍了 Shortcode 的用法,并且说在 the_content 显示的时候,Shortcode API 就会去解析已注册的 Shortcode,这就让 Shortcode 不能轻易的用在别处,不是在 post 里写 [unmi_blog] 将会原样显示出 [unmi_blog] 来,其实也就是在 WordPress 系统里有:

add_filter('the_content', 'do_shortcode'); 

但是人是活的,那些代码原本就是人编写的,我们可以假以巧妙的 Hack 让 Shortcode 应用在别处。

1. Customer Field 中应用 Shortcode Parse Shortcodes in your Custom Fields
2. Sidebar 里的 Text Widget 中 Adding a Shortcode to a Sidebar Widget
3. 任意地方 $text = yourShortCodeFunction("[your shortcode tag here]");echo $text; 外大括号,里小括号

 /*<?php wp_show_surveys(1);?>*/
 function wp_show_survey($survey_id=''){
  $short_code = '[SURVEYS '.$survey_id . ']';
  $output = apply_filters('show_survey', $short_code);
  echo $output;
 }

add_filter('show_survey','do_shortcode');

function custom_show_survey($content=''){
 //echo "<script>alert(123)</script>";
 return $content;
}

//add_filter('show_survey','custom_show_survey');

参考: 1. Shortcode API

写第一个 WordPress 插件程序

本文旨在让像我这样的 WordPress 初入门的开发者快速体验怎么写出一个最简单能工作的插件。至于插件的工作原理就不太多说,但基本的还是要懂得,插件中会用 add_action() 或 add_filter() 方法去挂住一些事件,如显示标题、显示内容等事件,然后执行一个函数。

add_action() 意味着某件事情发生了,要做什么事情,add_filter() 意味着事情发生,并传来的数据可对数据进行处理。用 add_action() 还是 add_filter() 就看你实际需求了。

虽然刚开始就声明了不太想多讲插件的原理,但前面几句话却表明的差不多了。立即例子入手吧,比如我们来做一个在每篇文章内容后附加一句版权声明的话。 阅读全文 >>