WordPress让插件随主题一同启用

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

     在编写一个主题的时候,可能有些功能并不一定要在主题中实现,而是要借助一些插件来实现。那么我们如何做到在启用主题的时候,同时启用某个插件呢?

     我们可以在主题的functions.php中添加以下代码(这里以akismet为例):

include_once( ABSPATH . 'wp-admin/includes/plugin.php' );

// 判断插件是否已经启用
if (is_admin() && current_user_can('activate_plugins')
  && !is_plugin_active(ABSPATH . 'wp-content/plugins/akismet/akismet.php')) {
  // 启用插件
  activate_plugin(ABSPATH . 'wp-content/plugins/akismet/akismet.php');
}

     首先我们需要include一下plugin.php,因为我们用到的两个函数is_plugin_active()和activate_plugin()都是在plugin.php中定义的,而主题文件不会自动引用这个文件。

     接着我们需要判断当前页面是否是后台,同时为了安全考虑,我们需要用current_user_can()判断当前用户是否有启用主题的权限。最后,判断插件是否已启用,这里使用插件主文件的路径,何为插件主文件呢?这个文件在插件目录下,一般与插件同名,用文本编辑器打开,一般会看到类似注释:

/*
Plugin Name: **
Plugin URI: **
Description: **
Version: **
Author: **
*/

     需要提醒的是,主题发布记得附带插件或叮嘱用户下载好插件。

参考文章:
Function Reference/is plugin active

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/how-to-activate-plugin-automatically-in-the-theme-wordpress.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

37 条留言

点此留言
  1. xiaomingtt xiaomingtt

    这个功能还是不错的。

  2. Tokin Tokin

    如果改用户没有下载这个插件…

    • Ludou

      @Tokin 那么啥事没有。

      • Tokin Tokin

        @Ludou ludou,我有个问题想问一下,比如知道分类ID为3,怎么才能获取这个分类名称呢?这个问题我反复搜了N次,也没找到答案

        • Ludou
          • Tokin Tokin

            @Ludou 谢谢啦,我去添加到我主题上去

  3. heasily

    大哥,如何在query_posts循环体内获取每篇文章的评论数量,是单纯的数值,不是comments_popup_link这种。。。。请问如何写

  4. heasily

    请问query_posts循环体可用的参数有哪些?有详细的介绍页面吗

    • Ludou

      @heasily http://codex.wordpress.org/Function_Reference
      http://www.google.com

  5. heasily

    那如果我在wp_posts新建了一个字段(比如:old_comment_count),我在这个循环体内该 怎么获取old_comment_count?

    • Ludou

      @heasily https://www.ludou.org/wordpress-add-post-column.html

  6. 西门 西门

    确实是个不错的想法,以前还真没考虑到。不过我一般都是尽量少用插件

  7. Laycher Laycher

    露兜元旦闲了,发文章也多了。
    祝新年快乐。
    这个技巧可以在写主题的时候学习加上一下,如果该主题不存在可以弹出对话框提醒用户。

  8. 小时候爱玩 小时候爱玩

    博主,请教你一个问题,就是我自定义了一个产品类,产品类增加了像文章的那种标签代表产品的品牌,但是页面不能重写,请问是什么原因?具体请参看http://www.dgz88.com/brand/niulaixiang/

    • Ludou

      @小时候爱玩 不太明白你的问题,如果是指post type,可以参考这篇文章:
      http://justintadlock.com/archives/2010/08/20/linking-terms-to-a-specific-post

      • 小时候爱玩 小时候爱玩

        @Ludou 主要是页面不能重写的问题,看了你给的页面好像不是一样的问题

  9. 向日葵媒体设计

    以后做主题时可以用~

  10. heasily

    有时候发布不了评论

  11. heasily

    xxx.com/?author=11这样的URL请问如何添加 xxx.com/?author=11&fans 这样的字段,让该用户界面显示其它内容,比如查看该用户关注的东西。该如何操作哦?就是include该用户的FANS.PHP 页面。。。。。URL上如何设置?

  12. heasily

    大哥,侧边栏如何获取用户归档页的用户ID?还有分类ID

    • Ludou

      @heasily <?php
      // 如果当前页是分类页
      $cat_obj = $wp_query->get_queried_object();
      $thisCat = $cat_obj->term_id; //分类id
      ?>

      用户id:
      <?php
      global $user_ID;
      echo $user_ID; ?>

      • heasily

        @Ludou get_the_author_meta('ID')这个好像也可以,不知道会不会比 <?php
        global $user_ID;
        echo $user_ID; ?>更省内存

  13. heasily

    wordpress使用固定链接后,如何通过类似&qqq=1的URl传值哦?

    • heasily

      @heasily 我使用了$_GET['XX']获得了这个传值问题了。谢谢大哥

  14. heasily

    比如字段中有 1,11, 我使用REPLACE(follow_man, '1,', '' ) 它会把,11,删除掉,只剩下1 请问如何完全匹配,只删除完全匹配的数字和逗号哦?

  15. heasily

    字段中有 1,11, 我使用REPLACE(follow_man, '1,', '' ) ,它会把1,1,都删除掉,请问如何完全匹配哦,只删除1, 保留11,

  16. 唯美网 唯美网

    看博客侧边栏的返回顶部,有点类似天猫。。

  17. xuanxi

    插件选项 及设置 可以保存吗?

    • Ludou

      @xuanxi 默认的选项和设置会随插件启动而保存,但这不是绝对,取决于插件代码怎么写的。
      一般的插件选项及设置都需要用户自行设置并保存,自动保存的都没得选,如何称得上"选项"
      如果你想如何给插件添加选项,可以google:wordpress 插件 选项

  18. BGMiao BGMiao

    请问露兜大大 如何将插件与主题整合到一起啊 有这方面的教程吗

发表留言