【问题标题】:How Do I Programmatically Check if a WordPress Plugin Is Already Activated?如何以编程方式检查 WordPress 插件是否已激活?
【发布时间】:2014-10-13 14:05:31
【问题描述】:

我知道我可以使用 WordPress 中给定的活动插件中的 activate_plugin() 来激活另一个插件。但我想知道的是如何以编程方式检查该插件是否已经处于活动状态?

例如,可以将这段 sn-p 代码临时添加到现有插件的初始文件中以激活合作伙伴插件:

add_action('wp','activatePlugins');

function activatePlugins() {
  if( is_single() || is_page() || is_home() || is_archive() || is_category() || is_tag()) {
    @ activate_plugin('../mypartnerplugin/thepluginsmainfile.php');
  }
}

然后,使用 Linux 命令行工具来爬取所有包含此代码的站点,它会强制进行页面查看。该页面视图将导致上述代码触发并激活该其他插件。据我所知,这就是如何以编程方式从给定插件激活另一个插件。

但问题是它会一遍又一遍地被激活。如果我有一个 if/then 条件和一些函数,我可以在 WordPress 中调用以查看该插件是否已经激活,如果没有激活则只激活一次。

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    解决办法如下:

    http://codex.wordpress.org/Function_Reference/is_plugin_active

    <?php
       if (!is_plugin_active('plugin-directory-path/plugin-file.php')) {
          @ activate_plugin('plugin-directory-path/plugin-file.php');
       }
    

    您可以将该插件目录路径设置为固定路径或相对路径。 (只是不是网络 URL 路径。)

    请注意,必须加载 wp-admin/includes/plugin.php 才能使上述代码正常工作。因此,最终的解决方案是:

    add_action('wp','myPluginTool');
    
    function myPluginTool() {
    if( is_single() || is_page() || is_home() || is_archive() || is_category() || is_tag()) {
    
      $sDir = dirname(__FILE__);
      $sDir = rtrim($sDir, '/');
      $sDir = str_replace('/myplugin','',$sDir); // myplugin was folder name of current plugin
      $sDir = rtrim($sDir, '/');
    
      require_once($sDir . '/../../wp-admin/includes/plugin.php');
    
      // DEACTIVATE
      if (is_plugin_active($sDir . '/partnerplugin/partner.php')) {
        deactivate_plugins($sDir . '/partnerplugin/partner.php');
      }
    
      /*
      // ACTIVATE
      if (!is_plugin_active($sDir . '/partnerplugin/partner.php')) {
        activate_plugin($sDir . '/partnerplugin/partner.php');
      }
      */
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-18
      • 2011-08-17
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 2016-11-30
      相关资源
      最近更新 更多