首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加到每个主题的主题选项菜单项

添加到每个主题的主题选项菜单项
EN

Stack Overflow用户
提问于 2011-06-12 14:31:54
回答 1查看 273关注 0票数 0

我已经在这个主题选项页面上工作了几个星期,遇到了一个又一个的问题。今天我向公众发布了主题为“酷橙色”的文章,我觉得一切都很好。然后我进入我的管理面板,切换到另一个主题来工作,"Cool Orange主题选项“显示为菜单项,但Cool Orange没有激活!主题选项页面应该只为当前激活的主题显示。

奇怪的是,主题选项页面显示在Windows管理员帐户中,而不是在我使用的有限帐户中。不过,我不认为这会有什么不同。有没有人能看看我下面的代码,告诉我哪里出了问题。

代码语言:javascript
复制
<?php 
// This options page mainly follows the WordPress Settings API Tutorial at
// http://ottodestruct.com/blog/2009/wordpress-settings-api-tutorial/

add_action('admin_init', 'co_admin_init');
add_action('admin_menu', 'co_admin_add_page');

function co_admin_add_page() {
    add_theme_page(
        'Cool Orange Theme Options',
        'Cool Orange Theme Options',
        'manage_options',
        'coolorange',
        'co_theme_options_page'
    );
}

function co_admin_init() {
    register_setting(
        'coolorange_theme_options', 
        'coolorange_theme_options',
        'coolorange_options_validate'
    );

    // what each parameter represents: 
    // add_settings_field($id, $title, $callback, $page, $section, $args);
    add_settings_section(
        'coolorange_logo_main', 
        'Logo Section Settings', 
        'logo_section_text', 
        'coolorange'
    );
    add_settings_field(
        'upload_image_button', 
        '<strong>Upload logo to the Media Library</strong>', 
        'file_upload_button', 
        'coolorange', 
        'coolorange_logo_main'
    ); // Upload Logo button
    add_settings_field(
        'image_url', 
        '<strong>Logo location</strong>', 
        'file_location', 
        'coolorange', 
        'coolorange_logo_main'
    ); // logo url field

    ...more add_settings_field sections
}

function co_theme_options_page() {
    ?>
    <div class="wrap" style="margin-bottom: 20px;">
    <div id="icon-themes" class="icon32"><br /></div><h2>Cool Orange Theme Options</h2>
    <?php if($_REQUEST['settings-updated'] == 'true') {
        echo '<div id="message" class="updated fade"><p>Cool Orange options saved.</p></div>';
    } ?>
    <form action="options.php" method="post" name="options_form">
    <?php settings_fields('coolorange_theme_options'); ?>
    <?php do_settings_sections('coolorange'); ?>
    <div style="text-align: center; padding: 20px;"><input name="Submit" class="button-primary" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" /></div>
    </form>
    </div>
    <?php 
}

function logo_section_text() { ?>
    <p>In this section, you can replace the standard blog title heading with a custom logo. The logo cannot be wider than <strong>960 pixels</strong>.</p>
    <p><strong>How to upload a logo to replace the heading:</strong></p>
    <div style="background-color: #FFFFFF; border: 1px solid #BBBBBB; padding: 30px; margin-bottom: 10px;">

        ...logo upload instructions

        </div>
<?php }

function file_upload_button() {
    $options = get_option('coolorange_theme_options');
    echo '<input id="upload_image_button" class="button-secondary" type="button" name="coolorange_theme_options[upload_image_button]" value="Upload Logo" />';
}
//Scripts to load WP's Media Library panel
//http://www.webmaster-source.com/2010/01/08/using-the-wordpress-uploader-in-your-plugin-or-theme/
// Associated with file_upload_button function
function my_admin_scripts() {
    wp_enqueue_script('media-upload');
    wp_enqueue_script('thickbox');
    wp_register_script('my-upload', trailingslashit( get_stylesheet_directory_uri()).'scripts/invoke_uploader.js', array('jquery','media-upload','thickbox'));
    wp_enqueue_script('my-upload');
}

function my_admin_styles() {
    wp_enqueue_style('thickbox');
}

if (isset($_GET['page']) && $_GET['page'] == 'coolorange') {
    add_action('admin_print_scripts', 'my_admin_scripts');
    add_action('admin_print_styles', 'my_admin_styles');
} ?>
<?php 
... more settings functions

function logo_css() {
    global $coolorange_theme_options;
    $coolorange_settings = get_option('coolorange_theme_options');

    $backgroundurl = $coolorange_settings['image_url'];
    $imagewidth = $coolorange_settings['image_width'];
    $imageheight = $coolorange_settings['image_height']; 
    $paddingtop = $coolorange_settings['padding_top'];
    $paddingright = $coolorange_settings['padding_right']; 
    $paddingbottom = $coolorange_settings['padding_bottom']; 
    $paddingleft = $coolorange_settings['padding_left']; 
    $removetitle = $coolorange_settings['remove_blogtitle']; ?>
    <style type="text/css">
        <!--
        #logo {
            <?php if ($backgroundurl) echo "background: url(" . $coolorange_settings['image_url'] . ") top center no-repeat";
                else echo "background: transparent"; ?>;
            width: <?php if ($imagewidth) echo $imagewidth; else echo "auto"; ?>;
            height: <?php if ($imageheight) echo $imageheight; else echo "auto"; ?>;
            padding-top: <?php if ($paddingtop) echo $paddingtop; else echo "1em"; ?>;
            padding-right: <?php if ($paddingright) echo $paddingright; else echo "2em"; ?>;
            padding-bottom: <?php if ($paddingbottom) echo $paddingbottom; else echo "1em"; ?>;
            padding-left: <?php if ($paddingleft) echo $paddingleft; else echo "2em"; ?>;
            margin: 0 auto;
        }

        #blog-title a {
            display: block;
            width: <?php if ($imagewidth) echo $imagewidth; else echo "auto"; ?>;
            height: <?php if ($imageheight) echo $imageheight; else echo "auto"; ?>;
            text-indent: <?php if ( $removetitle ) echo "-2000px"; else echo "0"; ?>;
        }

        #blog-description {
            text-indent: <?php if ( $removetitle ) echo "-2000px"; else echo "0"; ?>;
        }
        -->
        </style>
<?php } //closes logo_css function

add_action('wp_head', 'logo_css');

//Validation
function coolorange_options_validate($input) { // opens coolorange_options_validate function
$options = get_option('coolorange_theme_options');

//check filetypes for image url
$options['image_url'] = trim($input['image_url']);
//var_dump($options); // for debugging
if ( !preg_match ( '/\.(gif|jpg|jpeg|png)$/', $options['image_url'] ) ) { //opens if statement
    $options['image_url'] = ''; 
    //echo '<div id="message" style="color: red;"><p>File type must have the file extension .jpg, .jpeg, .gif or .png</p></div>';
    } // closes if statement

     ...more validation code

//check input on padding left to make sure it includes only numbers, letters and the percentage sign
$options['padding_left'] = trim($input['padding_left']);
if ( !preg_match ( '/[0-9](px|em|%)/', $options['padding_left'] ) ) {
    $options['padding_left'] = '';
    //echo '<div id="message" style="color: red;"><p>Padding top must be specified in px, em or %</p></div>';
    }

//check if checkbox has been checked
$options['remove_blogtitle'] = $input['remove_blogtitle'];
if ( !isset( $input['remove_blogtitle'] ) ) {
    $input['remove_blogtitle'] = null;
}
    return $options;
} // closes coolorange_options_validate function

//if (isset($_GET['page']) && isset($_GET['page']) == 'coolorange')
//      add_action('admin_notices', 'coolorange_options_validate'); //shows validation errors at the top of the page
?>

为了简洁,我省略了一些重复的代码。

EN

回答 1

Stack Overflow用户

发布于 2011-06-13 09:17:30

感谢Stack 101的评论。原来我一直使用的主题是Cool Orange,因为它是以cookie的形式存储在我的浏览器中的。在我写这篇文章的时候,我没有想到我已经激活了主题切换器插件,并用它来切换到Cool Orange主题。

主题切换器存储在cookie中使用的主题。此cookie将覆盖WP管理面板的主题激活。当我从浏览器中删除Cool Orange的单个cookie时,每个主题的外观面板都恢复到正常状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6320542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档