Plugin default settings hook

时间:2013-11-13 作者:Nathan Powell

我正在编写一个插件,我希望它的默认设置根据所选主题进行更改。我已经让它工作了,但我更愿意为此提供一个动作挂钩,而不是像我在这里这样编写特定命名的函数。有没有更好的方法do_actionadd_action 可能地

插件管理PHP:

function bf_set_defaults(){
  $default_settings = array(
    // Header
      \'embers_header_nav_pos\' => \'bottom\',
      \'embers_header_leftcol\' => \'4\',
      \'embers_header_middlecol\' => \'4\',
      \'embers_header_rightcol\' => \'4\',

    // Full Width Content
      \'embers_full_width_contentcol\' => \'12\',

    // Content Sidebar
      \'embers_content_sidebar_contentcol\' => \'8\',
      \'embers_content_sidebar_primarycol\' => \'4\',

    //Sidebar Content
      \'embers_sidebar_content_contentcol\' => \'8\',
      \'embers_sidebar_content_primarycol\' => \'4\',

    // Content Sidebar Sidebar
      \'embers_content_sidebar_sidebar_contentcol\' => \'6\',
      \'embers_content_sidebar_sidebar_primarycol\' => \'4\',
      \'embers_content_sidebar_sidebar_secondarycol\' => \'2\',

    // Sidebar Sidebar Content
      \'embers_sidebar_sidebar_content_contentcol\' => \'8\',
      \'embers_sidebar_sidebar_content_primarycol\' => \'4\',
      \'embers_sidebar_sidebar_content_secondarycol\' => \'2\',
      \'embers_sidebar_sidebar_content_contentsidebar\' => \'10\',

    // Sidebar Content Sidebar
      \'embers_sidebar_content_sidebar_contentcol\' => \'8\',
      \'embers_sidebar_content_sidebar_primarycol\' => \'4\',
      \'embers_sidebar_content_sidebar_secondarycol\' => \'2\',
      \'embers_sidebar_content_sidebar_contentsidebar\' => \'10\',
    );

  if (function_exists(\'bf_new_defaults\')) {
   return bf_new_defaults( $default_settings );
  }else{
   return $default_settings;
  }

}

// Create the Admin Page
$this->create( $page_id, $menu_ops, $page_ops, $settings_field, bf_set_defaults() );
主题功能。php:

function bf_new_defaults( $default_settings ) {
 $default_settings[\'embers_header_nav_pos\'] = \'top\';
 $default_settings[\'embers_header_leftcol\'] = \'8\';
 return $default_settings;
}

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

我会用过滤器。您可以删除此项:

if (function_exists(\'bf_new_defaults\')) {
    return bf_new_defaults( $default_settings );
} else {
    return $default_settings;
}
将其替换为以下内容:

 return apply_filters(\'bf_filter\', $default_settings)
下面是代码的一个截断的概念验证版本,以便您可以看到如何$default_settings 更改。

add_filter(
    \'bf_filter\',
    function($default_settings) {
        var_dump($default_settings);
        $default_settings[] = 4;
        return $default_settings;
    }
);
$default_settings = array(1, 2, 3);
var_dump(apply_filters(\'bf_filter\', $default_settings));
必须在之前添加筛选器bf_set_defaults 运行时,您可能会遇到插件在主题之前加载的问题,但这取决于函数的使用方式(何时)。

结束

相关推荐

wp_list_tables bulk actions

如何在扩展的WP\\U List\\U表中触发批量操作。我一直在将以下批量操作添加到may table的选择框中,但在Apply上不会发生任何事情下面是我如何添加批量操作的function get_bulk_actions() { $actions = array( \'delete\' => \'Delete\', \'parsing\' => \'Parsen\' );