要覆盖wp_Options的默认插件配置吗?

时间:2011-03-22 作者:Dan Gayle

我有几个插件,我总是以完全相同的方式设置配置。每次我创建一个新站点时,都会插入相同的插件,并且需要相同的时间来设置它们。

是否可以创建一个配置文件,覆盖每个插件设置的任何wp\\U选项?

3 个回复
最合适的回答,由SO网友:kaiser 整理而成

您可以检查它们添加了哪些选项(查看源代码),然后只需编写如下函数:

/*
Plugin Name:    Mother of all plugins
Plugin URI:  http://wordpress.org/extend/plugins/
Description:    Offers the <code>$all_plugin_options;</code> var to access all predefined plugin options
Author:      Franz Josef Kaiser
Author URI:     http://say-hello-code.com
Version:        0.1
License:        GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*/

// Template Tag
function get_all_plugin_options() 
{
    // First we call the class
    $class = new MotherOfAllPlugins;
    $data = $class->predefined_plugin_options()
    return $data;
}

if ( ! class_exists(\'MotherOfAllPlugins\') )
{

class MotherOfAllPlugins
{
    protected $plugin_options;

    public function __construct( $plugin_options )
    {
      // defaults
      $default_options = array(
         \'plugin_a\' => array(
             \'deprecated\' => \'\'
            ,\'name\'       => \'value\'
            ,\'key\'        => \'value\'
          )
        ,\'plugin_b\' => array(
             \'deprecated\' => \'\'
            ,\'name\'       => \'value\'
            ,\'key\'        => \'value\'
          )
      );
      // Now overwrite the 
      $this->plugin_options = array_merge( $default_options, $plugin_options );

      add_action( \'init\', \'predefined_plugin_options\' );
    }

    function predefined_plugin_options() 
    {

      // Set the flag if we have already done this
      // _EDIT #1:_ This sets an option in the wp_options table containing TRUE if your plugin predef options are already present in the DB
      if ( !get_option( \'predef_plugins_setup\' ) === TRUE )
         add_option( \'predef_plugins_setup\', TRUE );

      if ( !get_option( \'predef_plugins_setup\' ) === TRUE )
      {
         // Add the options for the plugins
         foreach ( $plugin_options as $plugin => $options ) 
         {
            add_option( $plugin, $options, $options[\'deprecated\'], \'yes\' );
         }
      }

      // _EDIT #2:_ return the initial array for use in a global
      return $plugin_options
    }

} // END Class MotherOfAllPlugins

} // endif;
要在主题中获取插件选项,请执行以下操作:

// Now we take the return value & add it into global scope for further useage.
// This way we can access all options easily without a call to the DB.
// You can now access these values from anywhere in your theme.
$all_plugin_options = get_all_plugin_options();
请注意,真正添加选项的方式与插件的方式完全相同。否则就没用了。

SO网友:simplethemes

你可以在主题的功能中加入这样的内容。php。这样它只运行一次(当主题被激活时)。

add_option(\'my_initial_options\', false);

if ( get_option(\'my_initial_options\')== false ){
    addmyOptions();
    update_option( \'my_initial_options\', true,\'\',\'yes\' );
}

function addmyOptions(){

update_option("posts_per_page",1);
update_option( \'show_on_front\', \'page\' );

}

SO网友:Ashfame

不确定这样的事情是否可行,但一种解决方法是使用一个默认WP安装的虚拟数据库,该数据库配置了所有这些插件。现在,每当您需要设置另一个站点时,请输入此数据库并编辑主页url和站点url。

结束

相关推荐

Wp_Options中的临时RSS提要没有自动删除吗?

我刚刚注意到55000个条目(!)在我的wp\\U选项表中。我有一阵子没去那里了。所以我跑了:delete from `wp_options` where `option_name` like \'_transient_timeout_rss%\' delete from `wp_options` where `option_name` like \'_transient_rss_%\' 还有。。。现在返回到645个条目。。。既然transient似乎是永恒的,我怎么能自动删除这些旧的R