Как отобразить меню администратора WordPress в пользовательском виджете панели инструментов?

Я хочу показать меню администрирования WordPress в пользовательских виджетах панели инструментов. Как это сделать?


person Nadeem Akram    schedule 06.03.2014    source источник


Ответы (2)


Или просто вставьте это проверенное решение в файл functions.php темы и измените его. Затем, когда вам нужно, вы можете вызвать настройки администратора с помощью get_option()
, исправленные с помощью ввода от b__ и снова протестированные.

function register_mysettings() {
   register_setting( 'michal-option-group', 'new_option_name' );
   register_setting( 'michal-option-group', 'some_other_option' );
}
add_action( 'admin_init', 'register_mysettings' );

function add_michal_dashboard_widget(){
 wp_add_dashboard_widget(
         'michal_dashboard_widget',         // slug.
         'Michal Dashboard Widget',         // title
         'michal_dashboard_widget_function' // widget code
         );  
}

function michal_dashboard_widget_function(){
   if (isset($_POST['new_option_name'])) update_option( 'new_option_name',   sanitize_text_field( $_POST['new_option_name'])); 
   if (isset($_POST['some_other_option'])) update_option( 'some_other_option', sanitize_text_field( $_POST['some_other_option'])); 
?> 

 <form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
 <?php settings_fields( 'michal-option-group' ); ?>
 <?php do_settings_sections( 'michal-option-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>
</table>

<?php submit_button(); ?>
</form>
<?php       
} 

add_action( 'wp_dashboard_setup', 'add_michal_dashboard_widget' );
person Michal S    schedule 06.03.2014
comment
Функции внутри функций - не очень хорошая идея... admin_init и его обратный вызов должны быть вне michal_dashboard_widget_function. Кроме того, admin_init работает только в админке, нам не нужно проверять наличие is_admin(). - person brasofilo; 06.03.2014
comment
иногда я пытаюсь быть быстрым и так тупо ошибаюсь. спасибо б__ - person Michal S; 06.03.2014

Прежде всего: вы должны создать виджет панели инструментов. подробнее о том, как это сделать, можно прочитать здесь: API Dashboard Widgets

Теперь, чтобы показать меню, вы должны взглянуть на этот пост: Получить всех доступных администраторов страницы в Wordpress

Удачи!

person Eliran Efron    schedule 06.03.2014