我在wordpress主题中使用了redux框架。
我的全局变量是$ua_options
所以我在config.php
创建了一个开关:
array(
'id' => 'ua-enable-responsive',
'type' => 'switch',
'title' => __( 'Responsive', 'redux-framework-demo' ),
'compiler' => 'true',
'mode' => false,
),
在我的functions.php
中,我想有条件地将文件排入队列:
if ($ua_options['ua-enable-responsive']) {
wp_enqueue_style( 'mytheme-bootstrap', get_template_directory_uri() . '/css/bootstrap.css' );
}
else {
wp_enqueue_style( 'mytheme-non-responsive', get_template_directory_uri() . '/css/no-responsive.css' );
}
但这似乎不起作用。无论我是否在后端将开关设置为打开,第二个文件no-responsive.css
始终会被加载。
我还将全局变量称为functions.php
global $ua_options;
有人知道为什么这不起作用?还有办法显示这样的错误/警告吗?
答案 0 :(得分:1)
Redux的领导开发者。您需要在加载此代码之前调用Redux配置。如果你不能这样做,那么你必须做一个get_option('opt_name')来获取值。
基本上我打赌你会发现$ us_options是空的,因为它尚未创建。 ;)
答案 1 :(得分:0)
好的我需要在脚本排队函数中调用全局变量。
答案 2 :(得分:0)
在header.php中尝试此操作。还解决了这个问题
if ($ua_options['ua-enable-responsive'] == '1') {
// '1' true and '0' false .
wp_enqueue_style( 'mytheme-bootstrap', get_template_directory_uri() . '/css/bootstrap.css' );
}
else {
wp_enqueue_style( 'mytheme-non-responsive', get_template_directory_uri() . '/css/no-responsive.css' );
}
答案 3 :(得分:0)
你可以试试这样的事情
$redux_options = maybe_unserialize( get_option( 'xyz_redux', false ) );
if( $redux_options['custom-js'] ) {
add_action('wp_enqueue_scripts', 'load_custom_js');
}
其中xyz_redux
是Redux选项的全局变量的名称,它也是数据库中的选项名称。
$redux_options['custom-js']
是redux字段的ID。
根据问题,$redux_options['ua-enable-responsive']
您需要编写一个用于排队ike
的函数function load_custom_js() {
wp_register_script('custom-js', 'path/to/js', array(), '1.0', true );
wp_enqueue_script('custom_js');
}
我对领导开发者有疑问,这不是浪费资源吗?我的意思是我需要打电话给这个
$redux_options = maybe_unserialize( get_option( 'xyz_redux', false ) );
每次我想要来自redux选项的东西? (因为根据你的答案,redux选项将为空)