Окт 8

Полезности для wordpress. Часть 1

Рубрики: Wordpress Метки:  Количество просмотров: 1,232

Серьезные плагины для вордпресса я писать пока не готов. Не готов не в плане возможностей а из-за нехватки времени в данный момент. Задумки есть, полезные, хорошие, и думаю в ближайшее время я начну выпускать бесплатные плагины собственного производства.

Зато на всякие полезные функции время есть, я сталкиваюсь с ними почти ежедневно. Некоторые рождаются в моих ответах на форумах о wordpress, некоторые пишу для своих проектов на ВП.

В общем я решил время от времени создавать пост под названием «Полезности для wordpress. Часть ##» как только наберется небольшой запас кода, который заслуживает внимания, и который может быть полезным прежде всего новичкам, или тем, чьи знания php и структуры wordpress не велики – а функционал блога расширить хочется. Пост будет в формате «Вопрос-ответ».

И так, приступим:

Как вывести всех зарегистрированных пользователей блога и количество постов, которые они написали?

Проще всего в данном случае получить выборку запросом к базе данных.

    $q = $wpdb->get_results("SELECT `display_name`,COUNT(*) as `count` FROM $wpdb->posts,$wpdb->users where $wpdb->users.`ID`=$wpdb->posts.`post_author` and `post_parent`=’0’ group by post_author");
    if( !empty($q) ){

        echo ’<ul>’;

        foreach( $q as $rec ){
            echo "<li>$rec->display_name ($rec->count записей)</li>";
        }

        echo ’</ul>’;
    }

Результат будет примерно таким:

  • admin (30 записей)
  • arsenal (10 записей)
  • random_nick (5 записей)

Как узнать количество постов какого-то конкретного автора в wordpress?

Если известен ID участника блога, то нужно вызвать стандартную функцию get_usernumposts

echo get_usernumposts($id)

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

$row = $wpdb->get_row("select count(*) as `count` from $wpdb->posts where `post_author`=’$id’ and `post_parent`=’0’ and `post_status`=’publish’ and `post_type`=’post’");
if( !empty($row) ){
	echo "У пользователя (ID=$id) $row->count записей";
}

А если не по ID а по логину?

Почти тот же случай, но сперва нужно узнать ID пользователя

$login = "admin";

$user_data = get_userdatabylogin($login);
if( !empty($user_data) ){
	$count = get_usernumposts($user_data->ID);
	echo "У пользователя (Логин=$login) $count записей";
}

А если нужно вывести количество постов автора, зная его мыло, то замените get_userdatabylogin на get_user_by_email

Другие статьи автора

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