Home > WordPress > 提高主题的插件体验

提高主题的插件体验

2010/01/25 17 comments

很多主题作者为了提高开发效率,在主题里预留了一些指定插件的接口,当用户使用该主题,并且激活了相应的插件时,主题将自动调用插件,生成最适合该主题的效果。
如何为插件预留接口呢?以普及率很高的WP-Pagenavi插件为例,使用以下代码:

1
2
3
< ?php if(function_exists('wp_pagenavi')) : ?>
	< ?php wp_pagenavi() ?>
< ?php endif; ?>


这样当用户激活了WP-Pagenavi插件时,主题将自动调用插件的功能,不需要再修改模板。
但是以上的代码当用户没有使用WP-Pagenavi插件时,主题将失去文章列表分页功能。为了让主题的功能平稳退化,现在所有的主题作者都会使用以下的代码:

1
2
3
4
5
6
< ?php if(function_exists('wp_pagenavi')) : ?>
	< ?php wp_pagenavi() ?>
< ?php else : ?>
	<span class="newer">< ?php previous_posts_link(__('Newer Entries&raquo;')); ?></span>
	<span class="older">< ?php next_posts_link(__('&laquo;Older Entries')); ?></span>
< ?php endif; ?>

这样在用户没有激活WP-Pagenavi插件时,主题将使用WordPress提供的分页功能对文章列表进行分页。主题也不会绝对的依赖插件。
还有一种情况是在主题的某些模板中需要插件支持的,以我制作的Inpad主题为例,在Archives模板里需要调用WP_EasyArchives插件来生成安时间线存档的文章列表。在激活WP_EasyArchives插件时,该模板的效果如下:
Archives模板正常效果
而当用户启用了Archives模板,但却没有激活WP_EasyArchives插件时,我采用以下的效果来提醒用户安装相关的插件:
提醒用户激活相关插件
代码如下:

1
2
3
4
5
6
7
< ?php if (function_exists('wp_easyarchives')) : ?>
	< ?php wp_easyarchives(); ?>
< ?php else : ?>
	<div class="messagebox">
		< ?php _e('Sorry, please activate WP-EasyArchives plugin.'); ?>
	</div>
< ?php endif; ?>

同过设置环境条件不能达到模板要求时的应对方案,可以防止用户在没有激活插件时导致页面出错,也可以增强主题对用户的友好性。
但这种强迫用户使用插件的行为同样也不是我所提倡的,只是时间关系,我不能及时地做出一个更好的应对方案。最好的方法,当然是集成插件,或者把一个完整的替代功能做进主题里。

Categories: WordPress Tags: ,

17 comments.

  1. zwwooooo
    2010/01/25 at 12:17 pm

    嗯,这样很方便,我折腾的几个主题都加了些。

    Reply | #1
  2. 万戈
    2010/01/25 at 1:52 pm

    对于私用主题就不需要加这些判断了,如果是共享的主题确实很有利于用户

    Reply | #2
  3. 先看看
    2010/01/25 at 1:52 pm

    这个考虑不错

    Reply | #3
  4. Firm
    2010/01/25 at 2:08 pm

    不错不错,可以试试看。

    Reply | #4
  5. Jutoy
    2010/01/25 at 6:27 pm

    恩,同意万戈~

    Reply | #5
  6. 泡面
    2010/01/25 at 8:33 pm

    这几个插件偶也在用

    Reply | #6
  7. A.shun
    2010/01/25 at 8:43 pm

    真是体贴呐

    Reply | #7
  8. 自行车头盔
    2010/01/25 at 9:11 pm

    插件是最好用的~ 特别是把主题的东西做成插件!

    Reply | #8
  9. xiao3
    2010/01/25 at 9:16 pm

    恩~这个主意很赞!经常要搜索找这个!

    Reply | #9
  10. rusaer
    2010/01/25 at 10:56 pm

    主题,现在技术还不行

  11. LAONB
    2010/01/25 at 11:29 pm

    最近我都没时间折腾了,呵呵。

  12. 卢松松
    2010/01/26 at 11:22 am

    对wp用户是相当有用的呢

  13. bolo
    2010/01/26 at 1:18 pm

    @zwwooooo
    哈哈,其实这是主题营销的一个方法,有空我说一下
    @万戈
    我觉得私用主题也要加,万一WP升级后某个插件不能用了呢?

  14. mg12
    2010/01/26 at 6:55 pm

    我不赞同后一个方案, 因为博客是给访客看的, 不是给博主看的. 如果主题没调好, 不如直接转跳 404, 或者 “Archive page is not yet ready, please come back later.”

  15. bolo
    2010/01/26 at 8:07 pm

    @mg12
    你优先考虑访客,我考虑的是每个页面的第一个读者都是博主自己。

  16. evlos
    2010/01/27 at 7:21 pm

    很好的想法,小邪学习一下 ~

  17. 风云春秋博客
    2010/01/29 at 4:19 pm

    访客是第一

X [¥15]