Home > WordPress > 提高主题的插件体验
2010January . 25th

提高主题的插件体验

很多主题作者为了提高开发效率,在主题里预留了一些指定插件的接口,当用户使用该主题,并且激活了相应的插件时,主题将自动调用插件,生成最适合该主题的效果。
如何为插件预留接口呢?以普及率很高的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; ?>

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

  1. 2010January . 25th - 12:17 PM

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

  2. 2010January . 25th - 1:52 PM

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

  3. 2010January . 25th - 1:52 PM

    这个考虑不错

  4. 2010January . 25th - 2:08 PM

    不错不错,可以试试看。

  5. 2010January . 25th - 6:27 PM

    恩,同意万戈~

  6. 2010January . 25th - 8:33 PM

    这几个插件偶也在用

  7. 2010January . 25th - 8:43 PM

    真是体贴呐

  8. 2010January . 25th - 9:11 PM

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

  9. 2010January . 25th - 9:16 PM

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

  10. 2010January . 25th - 10:56 PM

    主题,现在技术还不行

  11. 2010January . 25th - 11:29 PM

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

  12. 2010January . 26th - 11:22 AM

    对wp用户是相当有用的呢

  13. 2010January . 26th - 1:18 PM

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

  14. 2010January . 26th - 6:55 PM

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

  15. 2010January . 26th - 8:07 PM

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

  16. 2010January . 27th - 7:21 PM

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

  17. 2010January . 29th - 4:19 PM

    访客是第一

Subscriber selector

Close