この問題を参照しているこのサイトにはいくつか質問があります。私はそれらを読んで提案された解決策を適用しました。
私は編集者の役割用に表示される非常に単純なテーマオプションページを作成しましたが、編集者がオプションを保存しようとすると、彼らは「Cheatin 'Uh?」を取得します。メッセージ。
以下は私のオプションコードです:
<?php
function map_register_settings() {
add_option( 'map_zoom', '1');
add_option( 'map_longitude', 'alpha');
register_setting( 'default', 'map_zoom' );
register_setting( 'default', 'map_longitude' );
register_setting( 'default', 'map_latitude' );
}
add_action( 'admin_init', 'map_register_settings' );
function map_register_options_page() {
add_theme_page('Map Center', 'Map Center', 'edit_theme_options', 'map-options', 'map_options_page');
}
add_action('admin_menu', 'map_register_options_page');
function map_options_page() {
?>
<div class="wrap">
<h2>Map Center Options</h2>
<form method="post" action="options.php">
<?php settings_fields( 'default' ); ?>
<table class="form-table">
<tr valign="top">
<th scope="row"><label for="map_zoom">Zoom Level (1 - 21):</label></th>
<td>
<input type="text" id="map_zoom" name="map_zoom" value="<?php echo get_option('map_zoom'); ?>" />
</td>
</tr>
<tr valign="top">
<th scope="row"><label for="map_latitude">Latitude:</label></th>
<td><input type="text" id="map_latitude" name="map_latitude" value="<?php echo get_option('map_latitude'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row"><label for="map_longitude">Longitude:</label></th>
<td><input type="text" id="map_longitude" name="map_longitude" value="<?php echo get_option('map_longitude'); ?>" /></td>
</tr>
</table>
<?php submit_button(); ?>
</form>
</div>
<?php
}
?>
私はまた、編集者の役割に必要な機能を付与するために、次のものを自分の関数ファイルに追加しました。
//ALLOW EDITOR TO CHANGE MAP CENTER
// get the the role object
$editor = get_role('editor');
// add $cap capability to this role object
$editor->add_cap('edit_theme_options');
これに関しては、バグ(ish)レポートがあります。 http://make.wordpress.org/themes/2011/07/01/wordpress-3-2-fixing-the-edit_theme_optionsmanage_options-bug/
フィルターを使用して、テーマページの機能を変更できます。最初に、register_setting()
呼び出しを次のように編集します。
register_setting( 'map-options', 'map_zoom' );
register_setting( 'map-options', 'map_longitude' );
register_setting( 'map-options', 'map_latitude' );
最初のパラメーターは設定グループであり、これが機能のフィルタリング対象です。
2番目は、フィルターを追加することです。
add_filter( 'option_page_capability_map-options', 'sewp_114719_map_options_capability' );
function sewp_114719_map_options_capability( $cap ) {
return 'edit_theme_options';
}
それはそれを行う必要があります。
理にかなっている場合は、代わりにカスタマイザーを使用できる場合がありますが、エディターがそれを私の頭上で使用できるかどうかはわかりません。
この プラグイン が役に立つかもしれません。役割およびこれらの役割の機能を編集、作成、および削除できます。