管理面板中的选择框功能链接到css

时间:2012-06-19 作者:Potatohead

我想将selectbox链接到我的CSS。

就像我单击列表中的一个项目一样,我的标题的背景会发生变化——标题的颜色在CSS中。

选择框不在html中,但在options.php 在主题文件中,部分位于functions.php 文件

因此,这里的要点是,如果我单击选择框,则会出现3个名称,如果我单击其中一个并保存它,则应将颜色更改为“主题样式”。

有人知道怎么做吗?

这是标题上的相关部分。php文件:

<div id="theme-main">
<div class="cleared reset-box"></div>
<div class="theme-box theme-sheet">
<div class="theme-box-body theme-sheet-body">
    <div class="theme-header">
    <div class="theme-logo">
        <?php if(theme_get_option(\'theme_header_show_headline\')): ?>
        <?php $headline = theme_get_option(\'theme_\'.(is_single()?\'single\':\'posts\').\'_headline_tag\'); ?>
        <<?php echo $headline; ?> class="theme-logo-name"><a href="<?php echo get_option(\'home\'); ?>/"><?php bloginfo(\'name\'); ?></a></<?php echo $headline; ?>>
        <?php endif; ?>
        <?php if(theme_get_option(\'theme_header_show_slogan\')): ?>
        <?php $slogan = theme_get_option(\'theme_\'.(is_single()?\'single\':\'posts\').\'_slogan_tag\'); ?>
        <<?php echo $slogan; ?> class="theme-logo-text"><?php bloginfo(\'description\'); ?></<?php echo $slogan; ?>>
        <?php endif; ?>
    </div>
    </div>
这是选项的相关部分。php文件:

$header_styles_options = array(
  \'style1\'        =>  __(\'Style 1\', THEME_NS),
  \'style2\'        =>  __(\'Style 2\', THEME_NS),
  \'style3\'        =>  __(\'Style 3\', THEME_NS),
);

array(
  \'id\'    =>  \'theme_style_options\',
  \'name\'  =>  __(\'Theme styles\', THEME_NS),
  \'type\'  =>  \'select\',
  \'options\'   =>  $header_styles_options
  ),
);
因此,如果我选择“样式1”并保存选项,那么当我进入网站时,标题的颜色会发生变化。

2 个回复
SO网友:Gembel Intelek

不推荐

  <?php if(theme_get_option(\'theme_style_options\') == \'style1\'): ?>
    <link rel="stylesheet" type="text/css" media="all" href="<?php echo get_template_directory_uri(); ?>/style1.css" />
    <?php elseif(theme_get_option(\'theme_style_options\') == \'style2\'): ?>
    <link rel="stylesheet" type="text/css" media="all" href="<?php echo get_template_directory_uri(); ?>/style2.css" />
    <?php elseif(theme_get_option(\'theme_style_options\') == \'style3\'): ?>
    <link rel="stylesheet" type="text/css" media="all" href="<?php echo get_template_directory_uri(); ?>/style3.css" />
    <?php endif;?>

<link rel="stylesheet" type="text/css" media="all" href="<?php echo get_template_directory_uri(); ?>/<?php echo theme_get_option(\'theme_style_options\');?>.css" />
使用wp enqueue style 相反
function my_theme_styles(){ 
    $style = theme_get_option(\'theme_style_options\');
    wp_register_style( \'custom-style\', get_template_directory_uri() . \'/css/\'.$style);

    // enqueing:
    wp_enqueue_style( \'custom-style\' );
}
add_action(\'wp_print_styles\', \'my_theme_styles\');

SO网友:Unix

我认为使用CSS文件的lof很难维护,主要是当您有一个具有响应性设计的文件时。另外,如果一个文件包含基本内容,然后另一个文件包含不同的颜色,这是不好的,因为它会向服务器发出更多请求,而只发出一个请求就足够了。

在这种情况下,我的解决方案是:

在函数中使用wp\\u enqueue\\u样式。php插入CSS样式表。删除要使其变为变量的样式,例如:

body{/*color:blue*/}
在标题中。php文件:

<style type="text/css">
body{color:<?php echo get_option(\'option_id\', \'blue\'); ?>}
</style>
是的,从CSS样式表中使用CSS代码并不完美,但它只会向服务器生成一个请求。这是值得的。

结束