2

今日、基本的にオプションページであるシンプルなワードプレスプラグインを作成しました。これは、次のリンクの指示に基づいています: http://codex.wordpress.org/Creating_Options_Pages (このページの下部に、プラグインのバックボーンとして使用したサンプル コードがあります)。

基本的に、作成者/寄稿者が管理メニューに新しいタブを表示できるようにしたいと考えています。これをクリックすると、ユーザーはテキストを書き込んで「変更を保存」を押すことができるページに移動します (その後、保存されます)。そのテキストをデータベースに)。後で get_option('some_option') のような方法でこのテキストを呼び出せるようにしたいと考えています。

ただし、作成者/寄稿者は「manage_options」を実行できないため、作成した新しいメニュー タブのオプションを編集できませんでした。著者/寄稿者が manage_options できるように「User Role Editor」というプラグインをインストールしましたが、これにより管理メニューに「設定」タブが表示され、すべてのオプションを管理できるようになります。

作成者/寄稿者が、私が作成したプラグインの manage_options のみを許可し、それ以外は許可しないようにするにはどうすればよいですか? 作成したプラグインの権限制限を解除できますか? 任意のガイダンスをいただければ幸いです。(プラグインの開発はスムーズに進みましたが、今は行き詰っています)。

私のコードは、上記のリンクにある例とほとんど同じです。

<?php
add_action('admin_menu', 'baw_create_menu');

function baw_create_menu() {

    //create new top-level menu
    add_menu_page('BAW Plugin Settings', 'BAW Settings', 'edit_posts', 'my-plugin', 'baw_settings_page');

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


function register_mysettings() {
//register our settings
register_setting( 'baw-settings-group', 'new_option_name' );
register_setting( 'baw-settings-group', 'some_other_option' );
register_setting( 'baw-settings-group', 'option_etc' ); }

function baw_settings_page() { ?> <div class="wrap"> <h2>Plugin Name</h2>

<form method="post" action="options.php">

    <?php settings_fields( 'baw-settings-group' ); ?>
    <?php do_settings( 'baw-settings-group' ); ?>

    <table class="form-table">

        <tr valign="top">
        <th scope="row">New Option Name</th>
        <td><input type="text" name="new_option_name" value="<?php echo get_option('new_option_name'); ?>" /></td>
        </tr>

        <tr valign="top">
        <th scope="row">Some Other Option</th>
        <td><input type="text" name="some_other_option" value="<?php echo get_option('some_other_option'); ?>" /></td>
        </tr>

        <tr valign="top">
        <th scope="row">Options, Etc.</th>
        <td><input type="text" name="option_etc" value="<?php echo get_option('option_etc'); ?>" /></td>
        </tr>

    </table>

    <?php submit_button(); ?>

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

2 に答える 2

2

私は解決策を見つけました:

function twentyeleven_option_page_capability( $capability ) {
    return 'edit_posts';
}
add_filter( 'option_page_capability_baw-settings-group', 'twentyeleven_option_page_capability' );

設定を登録する関数の直後に追加しました(上記のコードでは、関数 register_mysettings() になります)

基本的に、add_filter 関数は、グループ baw-settings-group (register_setting 関数によって register_mysettings 関数で宣言されている) のオプションを edit_posts できるユーザーが変更できるようにします (関数 211_option_page_capability は、'edit_posts を返す 2 番目の引数として add_filter に与えられます')。

ソース: http://wordpress.org/support/topic/wordpress-settings-api-cheatin-uh-error?replies=0

于 2013-01-05T03:29:43.020 に答える
0

ユーザー権限で確認できます:

if (current_user_can('permission')) {
... do stuff
}

たとえば、編集者/管理者のみのセクションが必要な場合は、次のように使用できます。

function register_mysettings() {
  if (current_user_can('edit_posts') {
    //register our settings...
于 2013-01-05T02:18:40.460 に答える