Статьи

Админка wordpress: Удаляем / Добавялем виджеты

Опубликовано: 01.09.2018

видео Админка wordpress: Удаляем / Добавялем виджеты

Как удалить все редакции в Wordpress. Удаление и отключение ревизий на блоге Wordpress .

Здравствуйте, сегодня будем удалять с главной страницы админки wordpress ненужные виджеты и добавим свой собственный виджет.



Скачать исходники для статьи можно ниже

Добавлять и удалять виджеты будем с помощью плагин, который мы создадим с вами вместе в данной статье.

Можно, конечно же, добавить код в файл functions.php темы вашего сайта, однако, если вы поменяете или обновите тему, то и все изменения исчезнут.


Как изменить страницу входа в админ панель WordPress

 

Скачать плагин:

Сразу же, в начале данной статьи, вы можете скачать создаваемый нами плагин:

Скачать плагин «Mnogoblog Dashboard Widgets».

 

Результат:

До:


Роли пользователей WordPress – секрет управления

После:

 

Теперь давайте приступим к созданию плагина «Mnogoblog Dashboard Widgets».

1. Создаем файл dashboard_widgets.php со следующим кодом:

<?php /* Plugin Name: Mnogoblog Dashboard Widgets Plugin URI: Description: Create custom dashboard widgets Version: 0.1 Author: Mnogoblog Author URI: http://mnogoblog.ru License: GPL2 */

Здесь все просто — задается имя плагина, автор, сайт и др.

Далее пишем следующий код:

class Mnogoblog_Dashboard_Widgets { function __construct() { add_action( 'wp_dashboard_setup', array( $this, 'remove_dashboard_widgets' ) ); add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widgets' ) ); } function remove_dashboard_widgets() { } function add_dashboard_widgets() { } } $mdw = new Mnogoblog_Dashboard_Widgets();

Здесь:

— функция «remove_dashboard_widgets» будет использоваться, чтобы удалить стандартные виджеты.

— функция «add_dashboard_widgets» будет использоваться, чтобы добавить свои виджеты.

 

2. Далее давайте создадим еще один файл с именем custom_widgets.php.

Для начала нужно прописать в файле dashboard_widgets.php ссылку на наш custom_widgets.php, для этого добавим в dashboard_widgets.php следующий код:

require_once( plugin_dir_path( __FILE__ ) . '/custom_widgets.php' );

Теперь же приступим к редактированию файла custom_widgets.php, в нем мы будем определять какие виджеты нужно удалить, а какие добавить.

Удалять стандартные виджеты мы будем, используя функцию remove_meta_box() — более подробно о ней читайте в кодексе wordpress по следующей ссылке «codex.wordpress.org/Function_Reference/remove_meta_box» (на анг.) или «wp-kama.ru/function/remove_meta_box» (на рус.), данная функция имеет три аргумента:

<?php remove_meta_box( $id, $page, $context ); ?>

$id — атрибут HTML тега, контейнера Блока.

$page — тип записи на странице, на которой будет удаляться метаблок.

$context — место, где Блок выводится.

Итак, давайте пропишем в файл custom_widgets.php следующий код, позволяющий удалить стандартные виджеты с главной страницы админки:

<?php $remove_defaults_widgets = array( 'dashboard_incoming_links' => array( 'page' => 'dashboard', 'context' => 'normal' ), 'dashboard_right_now' => array( 'page' => 'dashboard', 'context' => 'normal' ), 'dashboard_recent_drafts' => array( 'page' => 'dashboard', 'context' => 'side' ), 'dashboard_quick_press' => array( 'page' => 'dashboard', 'context' => 'side' ), 'dashboard_plugins' => array( 'page' => 'dashboard', 'context' => 'normal' ), 'dashboard_primary' => array( 'page' => 'dashboard', 'context' => 'side' ), 'dashboard_secondary' => array( 'page' => 'dashboard', 'context' => 'side' ), 'dashboard_recent_comments' => array( 'page' => 'dashboard', 'context' => 'normal' ) ); К сведению:

Для того, чтобы удалить все виджеты с главной страницы Админки можно просто воспользоваться следующим кодом, который можно прописать в файл fuctions.php: function remove_dashboard_widgets(){ remove_meta_box('dashboard_right_now', 'dashboard', 'normal'); // Right Now remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal'); // Recent Comments remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal'); // Incoming Links remove_meta_box('dashboard_plugins', 'dashboard', 'normal'); // Plugins remove_meta_box('dashboard_quick_press', 'dashboard', 'side'); // Quick Press remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side'); // Recent Drafts remove_meta_box('dashboard_primary', 'dashboard', 'side'); // WordPress blog remove_meta_box('dashboard_secondary', 'dashboard', 'side'); // Other WordPress News // use 'dashboard-network' as the second parameter to remove widgets from a network dashboard. } add_action('wp_dashboard_setup', 'remove_dashboard_widgets');

Для добавления пользовательских виджетов WordPress , мы будем использовать встроенную функцию wp_add_dashboard_widget() — о данной функции можно прочитать здесь — «codex.wordpress.org/Function_Reference/wp_add_dashboard_widget» (анг.) или здесь — «wp-kama.ru/function/wp_add_dashboard_widget» (на рус.).

Функция принимает несколько аргументов:

wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback, $callback_args );

$widget_id — идентификатор виджета. Будет использован в CSS классе блока виджета. Станет ключом виджета в массиве виджетов.

$widget_name — название виджета. Будет видно в верхней части виджета. Пр.: «Последние комментарии».

$callback — название PHP функции, которая будет выводить на экран содержание виджета.

$control_callback — название функции, которая будет обрабатывать запрос редактирования виджета. В этой функции нужно сохранять настройки виджета и выводить форму настроек.

$callback_args — аргументы, которые будут переданы в функцию обратного вызова. callback функция получит объект $post и другие параметры переданные через эту переменную.

Давайте добавим свой виджет на главную страницу админки:

$custom_dashboard_widgets = array( 'my-dashboard-widget' => array( 'title' => 'Мой виджет', 'callback' => 'dashboardWidgetContent' ) );

Чтобы данный виджет не был пустым — давайте выведем в нем наши последние 10 публикаций, а для этого добавим следующий код:

function dashboardWidgetContent() { $user = wp_get_current_user(); echo 'Здравствуйте <strong>' . $user->user_login . '</strong>, это ваш пользовательский виджет. Ниже вы можете увидеть последние 10 ваших опубликованных статьей:'; $r = new WP_Query( apply_filters( 'widget_posts_args', array( 'posts_per_page' => 10, 'post_status' => 'publish', 'author' => $user->ID ) ) ); if ($r->have_posts()) : ?> <ul> <?php while ( $r->have_posts() ) : $r->the_post(); ?> <li> <?php edit_post_link(get_the_title());?> </li> <?php endwhile; ?> </ul> <?php endif; }

 

3. Далее немного отредактируем файл dashboard_widgets.php

Допишем функцию remove_dashboard_widgets() — удаляющие виджеты — следующим образом:

function remove_dashboard_widgets() { global $remove_defaults_widgets; foreach ( $remove_defaults_widgets as $widget_id => $options ) { remove_meta_box( $widget_id, $options['page'], $options['context'] ); } }

Допишем функцию add_dashboard_widgets() — добавляющие виджеты — следующим образом:

function add_dashboard_widgets() { global $custom_dashboard_widgets; foreach ( $custom_dashboard_widgets as $widget_id => $options ) { wp_add_dashboard_widget( $widget_id, $options['title'], $options['callback'] ); } }

На этом все! Удачи!

2011.11.19
Карта
rss