提高 WordPress 主题的插件体验

很多主题作者为了提高开发效率,在主题里预留了一些指定插件的接口,当用户使用该主题,并且激活了相应的插件时,主题将自动调用插件,生成最适合该主题的效果。

如何为插件预留接口呢?以普及率很高的WP-Pagenavi插件为例,使用以下代码:

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

这样当用户激活了WP-Pagenavi插件时,主题将自动调用插件的功能,不需要再修改模板。

但是以上的代码当用户没有使用WP-Pagenavi插件时,主题将失去文章列表分页功能。为了让主题的功能平稳退化,现在所有的主题作者都会使用以下的代码:

< ?php if(function_exists('wp_pagenavi')) : ?>
< ?php wp_pagenavi() ?>
< ?php else : ?>
<span class=newer>< ?php previous_posts_link(__('Newer Entries»')); ?></span>
<span class=older>< ?php next_posts_link(__('«Older Entries')); ?></span>
< ?php endif; ?>

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

Archives模板正常效果

引用的内容:[www.veryhuo.com]
< ?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; ?>

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

相关文章

我想将wordpress的默认接口路由改掉,愿意是默认的带一个 wp...
wordpress自定义分类法之后,我看到链接都自动在后面添加了一...
事情是这样的,我用 get_post_type 函数创建了一个自定义分类...
最近网站莫名其妙的被顶上了,过一个多小时,就注册一个账号...
最近服务器要到期了,就想着把网站转移到另外一台服务器,本...
今天在写wordpress的接口,然后碰到个奇怪的问题,怎么访问都...