如何支持让用户将自己的徽标添加到自定义主题中?

时间:2012-02-16 作者:sleeper

我是一名新手主题开发人员(年3个月),我正在尝试如何实现以下功能:

我正在构建的主题有一个徽标,我想为用户提供to be able to change.

Here is a screenshot so you can see more clearly what I am trying to do.

我正在使用主题检查,它目前告诉我:

建议:在主题中找不到add\\u custom\\u image\\u标头的引用。如果使用图像作为标题,建议主题实现此功能。

但我没有think 这适用于我的主题,因为我没有将整个标题用于图像。相反,只有一部分用于标识(加上它是绝对定位的)。

那么有没有template tag 哪一个可以做到这一点?因为,我肯定在抄本里找不到它。

提前谢谢,卧铺

3 个回复
最合适的回答,由SO网友:Chris_O 整理而成

您可以使用WordPress settings api

下面是一个简单的示例,它将创建一个输入字段,供用户输入自定义徽标的路径。

// Add a menu for our option page
add_action(\'admin_menu\', \'prefix_myplugin_add_page\');
function prefix_myplugin_add_page() {
    add_options_page( \'My Theme Options\', \'Theme Name Options\', \'manage_options\', \'prefix_mytheme\', \'prefix_myplugin_option_page\' );
}

// Draw the option page
function prefix_mytheme_option_page() {
    ?>
    <div class="wrap">
        <h2>Really Simple Google Analytics</h2>
        <form action="options.php" method="post">
            <?php settings_fields( \'prefix_mytheme_options\' ); ?>
            <?php do_settings_sections( \'prefix_mytheme\' ); ?>
            <input name="Submit" type="submit" value="Save Changes" />
        </form>
    </div>
    <?php
}

// Register and define the settings
add_action( \'admin_init\', \'prefix_mytheme_admin_init\' );
function prefix_mytheme_admin_init(){
    register_setting(
        \'prefix_mytheme_options\',
        \'prefix_mytheme_options\'
    );
    add_settings_section(
        \'prefix_mytheme_main\',
        \'prefix_mytheme_options\',
        \'prefix_mytheme_section_text\',
        \'prefix_mytheme\'
    );
    add_settings_field(
        \'prefix_mytheme_text_string\',
        \'Enter text here\',
        \'prefix_mytheme_setting_input\',
        \'prefix_mytheme\',
        \'prefix_mytheme_main\'
    );
}

// Draw the section header
function prefix_mytheme_section_text() {
    echo \'<p>Enter path to custom logo.</p>\';
}

// Display and fill the form field
function prefix_mytheme_setting_input() {
    // get option \'text_string\' value from the database
    $options = get_option( \'prefix_mytheme_options\' );
    $text_string = $options[\'text_string\'];
    // echo the field
    echo "<input id=\'text_string\' name=\'prefix_mytheme_options[text_string]\' type=\'text\' value=\'$text_string\' />";
}
在标题中调用自定义徽标选项。php文件:

$options = get_option( \'prefix_mytheme_options\' );
if ( ! empty( $options[\'text_string\'] ) ) { 
    $logo = $options[\'text_string\'];
} else { $logo = \'http://path_to_default_logo\'; 
}

SO网友:Bainternet

我刚发布完这个My Options Panel 几个小时前,这将回答你的问题。

SO网友:sabreuse

即使您的图像没有覆盖您在twentyten和twentyeleven中经常看到的典型全宽区域,添加\\u custom\\u image\\u header也是合适的方法,使用内置功能要比构建新的选项面板来处理它简单得多。

在声明支持自定义标头的过程中,you 定义图像的高度和宽度;您还可以控制输出它的代码,包括选择应用于它的任何位置。因此,没有理由将您的设计思维限制为仅使用全宽标题。

结束

相关推荐