it-swarm.com.de

Die Editorrolle kann keine benutzerdefinierten Designoptionen speichern

Es gibt ein paar Fragen auf dieser Site, die auf dieses Problem verweisen, und ich habe sie gelesen und die vorgeschlagenen Lösungen ohne Erfolg angewendet.

Ich habe eine sehr einfache Seite mit Designoptionen erstellt, die für die Rolle des Editors angezeigt wird, aber wenn ein Editor versucht, die Optionen zu speichern, wird die Meldung "Cheatin 'Uh?" Botschaft.

Das Folgende ist mein Optionscode:

<?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
}
?>

Ich habe außerdem Folgendes zu meiner Funktionsdatei hinzugefügt, um der Editorrolle die erforderlichen Funktionen zu geben:

//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');
3
Ciaran Gaffey

Es gibt einen Bug (ish) Bericht dazu hier: http://make.wordpress.org/themes/2011/07/01/wordpress-3-2-fixing-the-edit_theme_optionsmanage_options-bug/

Sie können einen Filter verwenden, um die Funktion für Themenseiten zu ändern. Zuerst möchten Sie Ihre register_setting()-Aufrufe so bearbeiten:

register_setting( 'map-options', 'map_zoom' ); 
register_setting( 'map-options', 'map_longitude' ); 
register_setting( 'map-options', 'map_latitude' ); 

Der erste Parameter ist die Einstellungsgruppe. Deshalb filtern wir die Funktionen.

Als zweites fügen Sie den Filter hinzu:

add_filter( 'option_page_capability_map-options', 'sewp_114719_map_options_capability' );
function sewp_114719_map_options_capability( $cap ) {
    return 'edit_theme_options';
}

Das sollte es tun.

Möglicherweise können Sie stattdessen den Customizer verwenden, wenn dies sinnvoll ist. Sie sind sich jedoch nicht sicher, ob die Redakteure dies aus meinem Kopf heraus verwenden können.

3
sanchothefat

Dieses Plugin kann helfen. Ermöglicht das Bearbeiten, Erstellen und Löschen von Rollen sowie Funktionen für diese Rollen.

1
neil.odiaz