主题选项页面未出现在Wordpress管理面板上

时间:2015-08-17 07:24:36

标签: php wordpress wordpress-theming

我正在使用以下代码创建自定义主题选项。

主题options.php

<?php 
// create custom plugin settings menu
add_action('admin_menu', 'director_create_menu');

function director_create_menu() {

    //create new submenu
    add_submenu_page( 'themes.php', 'Director Theme Options', 'Director Options', 'administrator', __FILE__, 'director_settings_page');

    //call register settings function
    add_action( 'admin_init', 'director_register_settings' );
}

function director_register_settings() {
    //register our settings
    register_setting( 'director-settings-group', 'director_facebook' );
    register_setting( 'director-settings-group', 'director_twitter' );
    register_setting( 'director-settings-group', 'director_rss' );
    register_setting( 'director-settings-group', 'director_logo' );
    register_setting( 'director-settings-group', 'director_analytics' );
}

function director_settings_page() {

?>

<div class="wrap">
<h2>Director Theme Settings</h2>

<form id="landingOptions" method="post" action="options.php">
    <?php settings_fields( 'director-settings-group' ); ?>
    <table class="form-table">
        <tr valign="top">
        <th scope="row">Logo:</th>
        <td>
            <input type="text" name="director_logo" value="<?php print get_option('director_logo'); ?>" /><br/>
            *Upload using the Media Uploader and paste the URL here.
        </td>
        </tr>
        <tr valign="top">
        <th scope="row">Facebook Link:</th>
        <td>
            <input type="text" name="director_facebook" value="<?php print get_option('director_facebook'); ?>" />
        </td>
        </tr>
          <tr valign="top">
        <th scope="row">Twitter Link:</th>
        <td>
            <input type="text" name="director_twitter" value="<?php print get_option('director_twitter'); ?>" />
        </td>
        </tr>
        <tr>
        <th scope="row">Display RSS Icon:</th>
        <td>
            <input type="checkbox" name="director_rss" <?php if(get_option('director_rss') == true){ print "checked"; } ?>  />
        </td>
        </tr>
        <tr>
        <th scope="row">Google Analytics Code:</th>
        <td>
            <textarea name="director_analytics"><?php print get_option('director_analytics'); ?></textarea>
        </td>
        </tr>      
    </table>
    <p class="submit">
    <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
    </p>

</form>
</div>
<?php } ?>

的functions.php

<?php
.
.
require_once('theme-options.php');
.
.
?>

我得到了菜单“导演选项”,如下图所示。

enter image description here

但是当我点击它时,我没有登陆director_settings_page()功能下定义的设置页面。

以下是预期结果

enter image description here

2 个答案:

答案 0 :(得分:1)

我采用add_theme_page()代替add_submenu_page()的方式。尝试一下,看看它是否有帮助。也许它会引导你走向正确的方向。

<?php

add_action('admin_menu', 'director_create_menu');
function director_create_menu(){
    add_theme_page('Director Theme Options', 'Director Theme Options', 'manage_options', 'director_settings', 'director_settings_page');
}


add_action( 'admin_init', 'director_register_settings' );
function director_register_settings(){
    //register our settings
    register_setting( 'director-settings-group', 'director_facebook' );
    register_setting( 'director-settings-group', 'director_twitter' );
    register_setting( 'director-settings-group', 'director_rss' );
    register_setting( 'director-settings-group', 'director_logo' );
    register_setting( 'director-settings-group', 'director_analytics' );
}


//Output the settings page
function director_settings_page(){
?>
    <!-- page stuff here -->

答案 1 :(得分:1)

在theme-options.php中替换它。

    <?php
add_action('admin_menu', 'director_create_menu');
function director_create_menu(){
    add_theme_page('Director Theme Options', 'Director Theme Options', 'manage_options', 'director_settings', 'director_settings_page');
}
add_action( 'admin_init', 'director_register_settings' );
function director_register_settings(){
    //register our settings
    register_setting( 'director-settings-group', 'director_facebook' );
    register_setting( 'director-settings-group', 'director_twitter' );
    register_setting( 'director-settings-group', 'director_rss' );
    register_setting( 'director-settings-group', 'director_logo' );
    register_setting( 'director-settings-group', 'director_analytics' );
}
//Output the settings page
function director_settings_page(){
?>
<div class="wrap">
<h2>Director Theme Settings</h2>

<form id="landingOptions" method="post" action="options.php">
    <?php settings_fields( 'director-settings-group' ); ?>
    <table class="form-table">
        <tr valign="top">
        <th scope="row">Logo:</th>
        <td>
            <input type="text" name="director_logo" value="<?php print get_option('director_logo'); ?>" /><br/>
            *Upload using the Media Uploader and paste the URL here.
        </td>
        </tr>
        <tr valign="top">
        <th scope="row">Facebook Link:</th>
        <td>
            <input type="text" name="director_facebook" value="<?php print get_option('director_facebook'); ?>" />
        </td>
        </tr>
          <tr valign="top">
        <th scope="row">Twitter Link:</th>
        <td>
            <input type="text" name="director_twitter" value="<?php print get_option('director_twitter'); ?>" />
        </td>
        </tr>
        <tr>
        <th scope="row">Display RSS Icon:</th>
        <td>
            <input type="checkbox" name="director_rss" <?php if(get_option('director_rss') == true){ print "checked"; } ?>  />
        </td>
        </tr>
        <tr>
        <th scope="row">Google Analytics Code:</th>
        <td>
            <textarea name="director_analytics"><?php print get_option('director_analytics'); ?></textarea>
        </td>
        </tr>      
    </table>
    <p class="submit">
    <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
    </p>

</form>
</div>
<?php } ?>

工作正常。

这是截图。

enter image description here

享受干杯:)