处理定制器设置的替代方案

时间:2014-01-12 作者:Bass Jobsen

我的主题JBST(https://github.com/bassjobsen/jamedo-bootstrap-start-theme) 利用https://codex.wordpress.org/Theme_Customization_API.

我需要可能添加一些默认设置到自定义程序。我知道add_setting() 具有添加默认值的选项。使用这个默认值似乎会给子主题定义自己的默认设置带来麻烦。

我已经找到了某种解决方案:

自定义程序的初始化:

 $wp_customize->add_setting( \'color\', array(
\'default\'        => false
) );
另请参见:https://core.trac.wordpress.org/ticket/26817

在我的主题文件中:

$color = get_theme_mod( \'color\',color);
if(!empty($color))
    //check for empty cause there will be a fallbback
    //fallback doesn\'t need the declaration below
{
    echo \'color:               \'.$color.\';\';
}
在函数中。父主题的php:

function jbst_default_settings()
{
do_action(\'jbst_child_settings\');
if(!defined(\'color\'))define(\'color\',\'#ED9C28\');//default
}   
在函数中。子主题的php:

add_action(\'jbst_child_settings\',\'sample_jbst_child_settings\');
function sample_jbst_child_settings()
{
    define(\'color\',\'red\');//child theme\'s default
}   
我想知道是否有人能为我提供更好的/替代的解决方案?

1 个回复
SO网友:birgire

我想知道您是否可以添加自己的jbst_default_color 过滤为默认颜色值:

$wp_customize->add_setting( \'color\', array(
    \'default\'        => apply_filters( \'jbst_default_color\', $color = \'#ED9C28\' )
) );
将此添加到子主题的位置:

/**
 * Change the default color
 */
function childtheme_jbst_default_color( $color )
{
       $color = \'red\';
       return $color;
}

add_filter( \'jbst_default_color\', \'childtheme_jbst_default_color\', 99, 1 );
修改默认颜色设置。

甚至玩theme_mod_{$name} 每次通话时应用的筛选器:

 get_theme_mod( $name, $default = false )
你感兴趣的地方theme_mod_color.

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register