Добавляем собственные типы записей в виджет «Прямо сейчас»

Консоль WordPress содержит очень полезный виджет, который отображает некоторую краткую информацию о вашем сайте и называется он «Прямо сейчас». По-умолчанию он отображает ваше количество записей, страниц и комментариев на сайте, позволяя кликнуть по этим ссылкам для возможности редактирования, если у вас есть соответствующие права.

При разработке плагина для произвольного типа записи, часто может оказаться хорошей идеей добавить ваш тип записи в этот виджет, что позволит сделать информацию более доступной и в общем более дружелюбной для всех. Использование нижеприведенного сниппета вы сможете добавить любое количество произвольных типов записей в этот виджет. Все, что нужно сделать, это заменить массив $post_types на массив того типа записи, который нужно добавить в виджет. Вы также сможете заметить, что в сниппете зашита проверка для того, чтобы только пользователи с правами редактирования каждого типа записи смогут кликнуть на них и т.д.

После того, как вы добавили типы записей в виджет, у них появится дефолтная круглая иконка сразу возле них, но ее можно с легкостью сменить на любую из dashicon, доступных в MP6 and WordPress 3.8+. Все это потребует некоторых правок CSS. CSS, представленный здесь заменит круг на такую же иконку, как и у записей. Свою же можно выбрать из этого набора иконок, просто выберите иконку и скопируйте соответствующий код, полученный по ссылке выше.

1add_filter( 'dashboard_glance_items', 'custom_glance_items', 10, 1 );
2function custom_glance_items( $items = array() ) {
3    $post_types = array( 'post_type_1', 'post_type_2' );
4    foreach( $post_types as $type ) {
5        if( ! post_type_exists( $type ) ) continue;
6        $num_posts = wp_count_posts( $type );
7        if( $num_posts ) {
8            $published = intval( $num_posts->publish );
9            $post_type = get_post_type_object( $type );
10            $text = _n( '%s ' . $post_type->labels->singular_name, '%s ' . $post_type->labels->name, $published, 'your_textdomain' );
11            $text = sprintf( $text, number_format_i18n( $published ) );
12            if ( current_user_can( $post_type->cap->edit_posts ) ) {
13                $items[] = sprintf( '%2$s', $type, $text ) . "\n";
14            } else {
15                $items[] = sprintf( '%2$s', $type, $text ) . "\n";
16            }
17        }
18    }
19    return $items;
20}

Код для иконки в виджете:

1#dashboard_right_now a.post_type-count:before,
2#dashboard_right_now span.post_type-count:before {
3  content: "\f109";
4}

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top