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

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

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

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

add_filter( 'dashboard_glance_items', 'custom_glance_items', 10, 1 );
function custom_glance_items( $items = array() ) {
    $post_types = array( 'post_type_1', 'post_type_2' );
    foreach( $post_types as $type ) {
        if( ! post_type_exists( $type ) ) continue;
        $num_posts = wp_count_posts( $type );
        if( $num_posts ) {
            $published = intval( $num_posts->publish );
            $post_type = get_post_type_object( $type );
            $text = _n( '%s ' . $post_type->labels->singular_name, '%s ' . $post_type->labels->name, $published, 'your_textdomain' );
            $text = sprintf( $text, number_format_i18n( $published ) );
            if ( current_user_can( $post_type->cap->edit_posts ) ) {
                $items[] = sprintf( '%2$s', $type, $text ) . "\n";
            } else {
                $items[] = sprintf( '%2$s', $type, $text ) . "\n";
            }
        }
    }
    return $items;
}

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

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

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

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

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

Об авторе ADv

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