定制器的输出值不起作用

时间:2016-05-03 作者:Athoxx

我只想从Customizer中的一个字段中输出值。

这是创建设置及其控件的代码(当前主题位于functions.php中):

<?php
add_action(\'customize_register\', \'h2c_customize_register\');
function h2c_customize_register($wp_customize) {
    $wp_customize->add_setting(
        \'h2c[logo_width_px]\', array (
            \'default\'           => \'\',
            \'capability\'        => \'edit_theme_options\',
            \'type\'              => \'option\',
            \'transport\'         => \'postMessage\',
        )
    );

    $wp_customize->add_control(
        \'logo_width_px\', array(
            \'label\'             => __(\'Logo Width\', \'obf_text\'),
            \'section\'           => \'h2c_default_things\',
            \'settings\'          => \'h2c[logo_width_px]\',
        )
    );
}
这就是我用来获取该字段值的方法:

<?php
    echo get_theme_mod( \'h2c[logo_width_px]\' );
?>
但什么都没有。

该字段在自定义程序本身中可见,它确实保存了我在其中输入的值。所以我知道它确实包含数据。在将输出代码放入var\\u dump()之后,我得到bool (false), 所以我猜它因为某种原因甚至找不到设置?

我做错什么了吗?现在我已经查看了几十次代码,看不出问题出在哪里。

顺便说一句,我对使用自定义程序很陌生,所以我肯定我做了一些错误的事情,我就是找不到可能的原因。

编辑:我想我解决了。

Edit2:不,我没有。我以为type 从…起optiontheme_mod 解决了,但没有解决。

编辑3:叹气。事实证明,这是两件事的结合:type 应该是theme_mod 名称不能包含任何[]字符。

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

您正在自定义程序中将该选项注册为option 然后试着把它作为theme_mod. 如果您只需更改type 从…起optiontheme_mod 当你注册设置时,它会很好地工作。因此,请尝试使用以下代码:

add_action(\'customize_register\', \'h2c_customize_register\');
function h2c_customize_register($wp_customize) {
    $wp_customize->add_setting(
        \'logo_width_px\', array (
            \'default\'           => \'\',
            \'capability\'        => \'edit_theme_options\',
            \'type\'              => \'option\',
            \'transport\'         => \'postMessage\',
        )
    );

    $wp_customize->add_control(
        \'logo_width_px\', array(
            \'label\'             => __(\'Logo Width\', \'obf_text\'),
            \'section\'           => \'h2c_default_things\',
            \'settings\'          => \'logo_width_px\',
        )
    );
}
然后要获得以下选项:

echo get_theme_mod( \'logo_width_px\' );
请注意我在上面使用的代码logo_width_px 而不是h2c[logo_width_px]这是因为theme\\u mod是序列化的选项,您无需再做任何事情。

相关推荐