如何安全地强制GET_THEME_MOD()使用已定义的GET_OPTION(“StyleSheet”)值?

时间:2013-05-28 作者:lkraav

在我们的开发过程中,每个开发人员都有几个相同主题的分支。主题分支位于不同的目录名中,因此get_theme_mod(), get_option("stylesheet") 如果我们出于某种原因(客户演示)被迫激活除“master”之外的另一个主题分支,则可以返回不同的值。

这使得我们不得不重新配置菜单、小部件、定制器mod等。

在我们的例子中,主题mod在各个分支之间需要不同是非常罕见的,所以我想get_theme_mod() 始终访问相同的mods阵列。

显而易见的解决方案似乎是”pre_option_stylesheet“过滤器是主题代码库的标准部分,但我不确定它是否会有任何意外的副作用。四处搜索,看起来这个选项几乎只在wp-includes/theme.php.

Q: 是“pre_option_stylesheet“过滤到这里的方式?或者你能想到其他什么吗?”?

1 个回复
SO网友:fuxia

滤器"theme_mod_$name" 在单独的插件中:

add_filter( \'theme_mod_very_special\', function() {
    return \'forced value\';
});
要替换完整的主题mod,请筛选pre_get_option_theme_mods_$theme_name 并返回一个数组。您必须为每个主题名称注册该过滤器。

结束

相关推荐

Usage of filters

在下面的示例中(从WordPress.org)获取提要后,为什么要删除过滤器<?php function return_7200( $seconds ) { // change the default feed cache recreation period to 2 hours return 7200; } add_filter( \'wp_feed_cache_transient_lifetime\' , \'return_720