0

WordPress 内に「 theme-options.php 」ページを作成しました。このページは、WP API の「外観」設定メニューの下にあります。このページでは、[設定] > [一般オプション]ページ ([サイト タイトル]と[タグライン/小見出し])から2 つのものを含めたいと思います。これらはここ ([テーマ オプション] ページ)で編集して保存できます。

これを達成するにはどうすればよいですか?これまでのところ、必要なボックスと情報が表示されますが、適切に保存/更新されません。私が見逃しているのは何ですか?

テーマ-options.php :

// Build our Page
function build_options_page() {

// Page Structure
   ob_start(); ?>
     <div class="wrap">
       <?php screen_icon();?>
       <h2>Theme Options</h2>

       <p><b><label for="blogname"><?php _e('Site Title') ?></label></b></p>
       <p><input name="blogname" type="text" id="blogname" value="<?php form_option('blogname'); ?>" class="regular-text" />  
       <span class="description"><?php _e('The name of your site.') ?></span></p> 
       <br />

       <p><b><label for="blogdescription"><?php _e('Tagline or Subheading') ?></label></b></p>
       <p><input name="blogdescription" type="text" id="blogdescription"  value="<?php form_option('blogdescription'); ?>" class="regular-text" /> 
       <span class="description"><?php _e('A brief description of your site.') ?></span></p> 
       <p class="submit">
       <input name="Submit" type="submit" class="button-primary" value="<?php esc_attr_e('Save Changes'); ?>" />
       </p>

     </div>
   <?php
   echo ob_get_clean();
   ?>
}
4

1 に答える 1

1

blognameこの例では、プロファイル ページを使用しておよびを表示および変更blogdescriptionしますが、コードへの移植は非常に簡単です。

add_action( 'show_user_profile', 'show_extra_profile_fields', 1 );
add_action( 'edit_user_profile', 'show_extra_profile_fields', 1 );

function show_extra_profile_fields( $user ) { 
    ?>
    <table class="form-table">  
        <tr>
            <th><label for="user_address">Site Title</label></th>
            <td>
                <input type="text" name="blogname" id="blogname" value="<?php echo esc_attr( get_option('blogname') ); ?>" class="regular-text" /><br />
                <span class="description"></span>
            </td>
        </tr>
        <tr>
            <th><label for="user_zip">Tagline</label></th>
            <td>
                <input type="text" name="blogdescription" id="blogdescription" value="<?php echo esc_attr( get_option( 'blogdescription' ) ); ?>" class="regular-text" /><br />
                <span class="description"></span>
            </td>
        </tr>       
    </table>
    <?php 
}

add_action( 'personal_options_update', 'save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_profile_fields' );

function save_extra_profile_fields( $user_id ) {

    if ( !current_user_can( 'edit_user', $user_id ) )
        return false;

    update_option( 'blogname', $_POST['blogname'] );
    update_option( 'blogdescription', $_POST['blogdescription'] );
}
于 2012-06-05T22:32:41.730 に答える