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

удаляем ненужные виджеты в админке

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

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

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

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

 

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

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

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

 

Результат:

До:

виджеты админки wordpress

После:

админка 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']
        );
    }
}

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

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>