我在首次安装时获取WordPress自定义程序中设置的默认值以保存到数据库时遇到一些问题,而无需用户先保存自定义程序以进行设置。我尝试了此线程的解决方案,但没有成功:
Use default value of wp_customizer in theme_mod output?
Customizer section/setting/control
//Social Icons Section
$wp_customize->add_section( \'socialsection\', array(
\'title\' => __( \'Social Media\' ),
\'priority\' => 4,
\'capability\' => \'edit_theme_options\',
) );
//Settings & Controls For Social Media
$wp_customize->add_setting( \'facebooklink_edit\', array(
\'default\' => \'#\',
\'sanitize_callback\' => \'esc_attr\',
\'transport\' => \'refresh\',
) );
$wp_customize->add_control(\'facebooklink_edit\', array(
\'label\' => __( \'Facebook Link\', \'spiffing\' ),
\'section\' => \'socialsection\',
) );
前端输出:
<a href="<?php echo get_theme_mod(\'facebooklink_edit\', \'#\'); ?>"><div class="fb-footer" id="fb-footer-bg"><i class="fa fa-facebook-f"></i></div></a>
基于customzier中用户操作的CSS操作:
?>
<style type="text/css">
<?php if( get_theme_mod( \'facebooklink_edit\' ) == \'\' ) { ?>
#fb-footer-bg { display: none; }
<?php } // end if ?>
</style>
<?php
从上面可以看出,这个mod只是在默认情况下将值设置为“#”,如果它随后检测到没有“#”,则会将“display:none”添加到该id。应该足够简单。但是,if语句似乎看到其条件已满足,即本例为空“”,并应用“display:none”。但正如您在前端和customzier的默认部分中所看到的,我已将默认设置为“#”。它甚至将其写入customzier中的占位符部分,而不是数据库。
如果用户在初始安装后进入自定义程序并单击“保存”,则此功能有效。可能会在数据库中初始化一个值,然后在前端读取和显示该值。
我已经将其用于链接等,但这个mod的不同之处在于它通过添加“display:none”来操纵div。
欢迎提出任何想法。