Наконец-то выкладываю рабочую версию плагина для WordPress «Список авторов WordPress». Начало разработки было описано в статье Делаем список авторов для WordPress.
Поскольку идея плагина была описана в предыдущей статье, перейду сразу к описанию инсталляции и дальнейшему использованию.
Установка плагина.
Здесь ничего нового:
- Скачиваем
- Выкладываем папку с файлами в wp-content/plugins
- Активируем в админке
Настраивать в данной версии ничего не нужно, вероятно появится позже какой-то дополнительный функционал.
При активации плагина будет создано две талицы wp_authors и wp_authors_stats (вместо wp_ будет ваш префикс, установленный в wp-config.php).
Использование плагина
Нам понадобится создать еще дополнительный шаблон в теме, который далее будет использоваться для вывода списка авторов.
Для этого скачайте мой пример шаблона authors.php и отредактируйте его под свой шаблон. (Новый вордпресс не дружит с вставками кода, поэтому при обновлении текста статьи все слетело)
Для оформления таблицы понадобится добавление классов в style.css
1 2 3 4 5 6 7 8 | .cell-head{font-weight:bold;background:white;vertical-align:middle;padding:5px 10px;} .cell-head-sort{font-weight:bold;background:white;vertical-align:middle;padding:5px 10px;} .cell1{background:white;vertical-align:middle;padding:5px 10px;} .cell2{background:white;vertical-align:middle;padding:5px 10px;} .cellint{text-align:right;} .author-table{background:#eeeeee;border: 1px solid #e3e3e3;} .author-table td{border: 1px solid #e3e3e3;} ._votes{float:left;margin:0 10px 10px 0;} |
Цвета отрегулируйте под свой шаблон.
Последним шагом осталось создать страницу и выбрать только что созданный шаблон Authors. Для того что бы работали страницы авторов у вас должен быть создан файл шаблона author.php, если такого нет, обратитесь к документации WordPress. Если у вас возникают трудности с созданием шаблонов, обращайтесь, постараюсь помочь. В следующих версиях планирую создание shortcode, т.е. будет возможность написания в любом посте/странице [authors-list] и он будет заменен таблицей с авторами. Подпишитесь на обновления, что бы не пропустить.
Скачать плагин WordPress Masterit Authors List | Страница плагина на WP
UPD. 19.01.2012. Плагин выложен в репозитарий плагинов WordPress. Страница плагина.
Внимание! Кто качал и использовал плагин с нашего сайта, не удивляйтесь, что на WordPress.Org директория именуется по-другому: masterit-authors-list (там автоматом делается), а все содержимое полностью совпадает. Поэтому у нас сайте теперь тоже лежит переименованная версия. Для полного обновления можно заменить (удалить masterit-authors2 и установить новый). Хотя вполне можно обновлять только файлы плагина. Извиняюсь за неудобства.
UPD. 12.01.2012: Исправлена ошибка пересчета комментариев авторов. Спасибо, Дима
UPD. 8.08.2011: Исправлена ошибка вызова несуществующей функции. Спасибо, Xeon.
UPD. 8.08.2011: Пример шаблона страницы списка авторов – может некорректно работать в вашем шаблоне.




После активации выплюнул вот такую бяку в шапку админки, которая успешно там поселилась:
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, ‘masterit_authors_list::create_adminmenu’ was given in /home/wm1175/domains/phplol.ru/public_html/writers/wp-includes/plugin.php on line 405
=======
Плагин тем не менее работает, разве что не работает сортировка, кнопки комментарии и дата это ссылки на несуществующие страницы например: http://writers.phplol.ru/authors/?order=comment_count
Строка 405 это вот это:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if ( !isset( $merged_filters[ $tag ] ) ) {
ksort($wp_filter[$tag]);
$merged_filters[ $tag ] = true;
}
reset( $wp_filter[ $tag ] );
do {
foreach ( (array) current($wp_filter[$tag]) as $the_ )
if ( !is_null($the_['function']) )
call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));
} while ( next($wp_filter[$tag]) !== false );
array_pop($wp_current_filter);
}
Спасибо, на днях исправлю и выложу обновление
Буду признателен, очень обрадовался когда нашёл у вас именно то что мне было нужно. Буду ждать обновления.
Обновил архив с плагином и выложил файл шаблона, а код пришлось убрать из статьи, почему-то новый WordPress убирает половину кода в процессе публикации….
Спасибо, плагин активировался без проблемм, но почему может не работать сортировка по комментариям, и статьям?
Забыл, вот пример: http://writers.phplol.ru/login/author-tops/
Так, всё, извиняюсь, можно удалить предыдущее коменты, там просто div один наезжал на таблицу и ссылки были не кликабельны поэтому.
Но выяснилось следующее, значение БД в таблице wp_authors, столбец comment_count почему то не обновляются, при установке плагина считываются правильно, а потом не изменяются.
p.s И ещё вылезло вот это, правда не могу точно сказать из-за вашего ли плагина, почему то после добавления нового поста для проверки появилось:
>< Поторопился сюда писать, похоже проблеммы в моём шаблоне, потому что посты пользователей засчитываются, это только у админа так.
Актуальна только ошибка в 405 линии.
Наспамил я тут)
UPD: При удаление коментариев:
Обновил еще раз архив с плагином, с пересчетом количества комментариев потестирую еще у себя. Спасибо
Хм, нет почему-то кол-во комментириев не обновляется. Зато исчезла фатал еррор при их удаление. Если нужно могу дать все права у себя в блоге, так как он ещё не рабочий и на этапе введения в эксплуатацию.
Думаю нашел баг, сегодня исправлю. Неверно параметры передавались
Хм, может ли это быть связанно с тем, что у меня не получается отключить предмодерацию комментариев на сайте? Ес-но в настройках всё выключенно это…
Вот comments.php: http://rghost.ru/17219531
А вот wp-comments-post.php: http://rghost.ru/17219661
не должно быть. счетчики обновляются при всех манипуляциях с комментариями, включая отправку в спам, удаление и т.п. При этом считаются только опубликованные комментарии.
Что интересно: Если отклонить комментарий человека и удалить его, кол-во его комментариев таки обновится на верное.
Не знаю как у вас там устроено, но похожа та функция которая обновляет статистику при удаление коммента – работает. А вот при добавление – нет.
Еще раз спасибо за активное тестирование. Выложил новую версию. Счетчики обновляются. Иногда обновляются не сразу, потому что используется встроенный wp_cron, т.е. в течении 5-10 минут, после посещении любой страницы, счетчик обновится.
Да, спасибо, всё работает.
А не могли вы помочь мне. Почему может не отключатся предмодерация комментариев?
Я уже хотел насильно добавлять при отправке коментов в БД значение comment_approved = «1″ Но не представляю как и где это лучше тут сделать. Свои файлы коментариев я прикладывал…
Надо бы изучить классы wp = (
Настроек в WP должно быть достаточно
Вот пример настроек без премодерации.
http://www.masterit.ru/wp-content/uploads/2011/08/options-1024×349.png
Единственное, что у меня установлено при наличии 2х или более ссылок в тексте комментария, все равно попадает на модерацию. Ваши файлы скачал, посмотрю. Они отличаются от оригиналов? Какая версия WP?
По настройкам всё верно, вот тут галочки нету, а всё равно требует подтверждения ><
"Перед появлением комментария
Администратор должен проверить комментарий"
wp-comments-post.php – не отличается я думаю.
А вот comments.php помойму свой в каждом шаблоне.
Версия 3.2.1
Оу, всё. Разобрался!
Это плагин Akismet блокировал всё несмотря на настройки блога.
Ну и хорошо, я как раз смотрел, и понял, что из-за спама может быть…
Что важно: похоже надо удалить и из корзины тоже, иначе будет просто «-1 к текущим»
Или лыжи не едут или я… >_<
Ещё не большой вопросик и я от вас отстану)))))
Как можно использовать информацию из вашего плагина в других частях блога? В частности требуется выводить кол-во комментариев юзера в сайдбаре.
Если ещё подробнее в functions.php у меня есть функция которая потом выводит в сайдбаре, так называемый краткий профиль, вообщем вот:
2
3
4
5
6
7
8
9
10
<?php global $current_user; get_currentuserinfo(); echo get_avatar( $current_user->user_email, '60' ); ?>
<p><span class="name"><?php global $user_login; get_currentuserinfo(); echo $user_login; ?></span> <br />
<a href="<?php bloginfo('url'); ?>/author/<?php echo $current_user->user_login; ?>">Профиль</a> | <a href="<?php bloginfo('url') ?>/wp-admin/profile.php" title="изменить">Изменить</a><br />
<a href="<?php echo wp_logout_url( $redirect ); ?>" title="Выйти">Выйти</a> </p>
<p>Ваш рейтинг:<?php if(function_exists('cp_displayPoints')){cp_displayPoints($curauth->ID);}?>
<p>Кол-во сообщений: <b><? Вот тут нужно вывести ?> </b>
<? if ( $num_unread > 0) {?>
<? echo "<a href='http://writers.phplol.ru/wp-admin/options-general.php?page=rwpm_inbox'><p>Новых личных сообщений: $num_unread</a>"; }?>
</div>
В плагине пока не реализованы отдельные функции для этого, но можно взять код:
2
3
4
5
6
//Получаем инфу об авторе:
$author = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."authors` WHERE user_id = $current_user->user_ID");
?>
<p>Кол-во сообщений: <b><? echo $author->post_count; ?> </b></p>
<p>Кол-во комментариев: <b><? echo $author->comment_count; ?> </b></p>
Да, вот что то такое и было нужно.
Вроде всё логично и не работать не чему.. Но ни чего не выводит… Может потому что через функцию… Хотя global $wpdb обьявлен…
Да, поторапился… get_row вместо get_results и ->ID вместо ->user_ID
Всё отлично! Примного благодарен. = )
Скажи пожалуйста
Я хочу, чтобы ниже имени была страна и город. Как это сделать?
http://chicherone.com/autors/
Извиняюсь за задержку с ответом. Если у Вас уже есть эти данные о пользователях, то, вероятно они хранятся в wp_user_meta
Т.е можно использовать функцию get_user_meta
Для каждого пользователя вызывать эту функцию и выводить нужную информацию.
2
3
4
5
6
$user_country = get_user_meta($author['user_id'], 'user_country');
$user_city = get_user_meta($author['user_id'], 'user_city');
?>
<td><?php echo $user_country ?></td>
<td><?php echo $user_city ?></td>
у меня плагин Add User Profile
И еще вопрос. Не хочу, чтобы с авы переходили на сайт пользователя. Где поменять на урл профиля.
Как я понял Add User Profile не позволяет добавлять страну и город или ошибаюсь?
В комментариях можно использовать возможности функции wp_list_comments, (на странице есть раздел Comments «Only With A Custom Comment Display»), Т.е. можно создать свой функцию и поместить в functions.php своей темы и можно настроить любой внешний вид.
Для статей это показывается в файлах темы, например в index.php использую код:
<td class="»>
0 ){ ?>
<td width="100" class="»><a href="/author//»>
<td width="50%" class="»><a href="/author//»>
<td width="100" class="»>
<td width="50%" class="»>
<td class=" cellint»>
<td class=" cellint»>
<td class="»> 0 ? date(«d.m.Y», strtotime($author['last_login'])) : «-»);?>
куда именно
2
3
4
5
6
7
8
9
10
11
12
13
<!-- порядковый номер --> <td class="<?php echo $class?>"><?php echo (intval($_REQUEST['offset'])+$i+1)?></td>
<?php /* если статей у автора больше 0, то ставим ссылку на его страницу */ if( $author['post_count'] > 0 ){ ?>
<!-- аватар --> <td width="100" class="<?php echo $class?>"><a href="/author/<?=$author['user_nicename']?>/"><?=get_avatar($author['user_id'], 100);?></a></td>
<!-- имя автора --> <td width="50%" class="<?php echo $class?>"><a href="/author/<?php echo $author['user_nicename']?>/"><?php echo $author['display_name']?></a></td>
<?php }else{ ?>
<!-- аватар --> <td width="100" class="<?php echo $class?>"><?php echo get_avatar($author['user_id'], 100);?></td>
<!-- имя автора --> <td width="50%" class="<?php echo $class?>"><?php echo $author['display_name']?></td>
<?php }?>
<!-- количество постов --> <td class="<?php echo $class?> cellint"><?php echo $author['post_count']?></a></td>
<!-- количество комментов --> <td class="<?php echo $class?> cellint"><?php echo $author['comment_count']?></a></td>
<!-- дата последнего входа --> <td class="<?php echo $class?>"><?php echo ( strtotime($author['last_login']) > 0 ? date("d.m.Y", strtotime($author['last_login'])) : "-");?></a></td>
</tr>
В исходниках функции get_avatar (wp-includes/pluggable.php:1655) нет добавления ссылки на домашнюю страницы, т.е. она у Вас добавляется каким-то плагином или может настройки… добавление может быть в apply_filters (wp-includes/pluggable.php:1739)
Можно скопировать всю эту функцию и убрать apply_filters…
где-то тут?
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
if ( ! get_option('show_avatars') )
return false;
if ( false === $alt)
$safe_alt = '';
else
$safe_alt = esc_attr( $alt );
if ( !is_numeric($size) )
$size = '96';
$email = '';
if ( is_numeric($id_or_email) ) {
$id = (int) $id_or_email;
$user = get_userdata($id);
if ( $user )
$email = $user->user_email;
} elseif ( is_object($id_or_email) ) {
// No avatar for pingbacks or trackbacks
$allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) )
return false;
if ( !empty($id_or_email->user_id) ) {
$id = (int) $id_or_email->user_id;
$user = get_userdata($id);
if ( $user)
$email = $user->user_email;
} elseif ( !empty($id_or_email->comment_author_email) ) {
$email = $id_or_email->comment_author_email;
}
} else {
$email = $id_or_email;
}
if ( empty($default) ) {
$avatar_default = get_option('avatar_default');
if ( empty($avatar_default) )
$default = 'mystery';
else
$default = $avatar_default;
}
if ( !empty($email) )
$email_hash = md5( strtolower( $email ) );
if ( is_ssl() ) {
$host = 'https://secure.gravatar.com';
} else {
if ( !empty($email) )
$host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash[0] ) % 2 ) );
else
$host = 'http://0.gravatar.com';
}
if ( 'mystery' == $default )
$default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}"; // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com')
elseif ( 'blank' == $default )
$default = includes_url('images/blank.gif');
elseif ( !empty($email) && 'gravatar_default' == $default )
$default = '';
elseif ( 'gravatar_default' == $default )
$default = "$host/avatar/s={$size}";
elseif ( empty($email) )
$default = "$host/avatar/?d=$default&s={$size}";
elseif ( strpos($default, 'http://') === 0 )
$default = add_query_arg( 's', $size, $default );
if ( !empty($email) ) {
$out = "$host/avatar/";
$out .= $email_hash;
$out .= '?s='.$size;
$out .= '&d=' . urlencode( $default );
$rating = get_option('avatar_rating');
if ( !empty( $rating ) )
$out .= "&r={$rating}";
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
} else {
$avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
}
return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
}
endif;
предпоследнюю строку
попробуйте заменить на
не помогло…
Попробуйте поискать в плагинах и в теме строку
Здравствуйте, это сново я, может вы сможете мне помочь, добавил в топ пользователей ещё один столбец с рейтингом юзеров: http://writers.phplol.ru/login/author-tops/
Рейтинг забираю из плагина CubePoints, вот так вывожу:
А как можно реализовать сортировку по этому рейтингу? Или хотя бы просто вывод по умолчанию с рейтингом по убыванию.
Хм, всё больше думаю что просто отсортировать нельзя, так как массивы ни как не связанны. Может тогда подскажите где у вас в плагине идёт запись в базу? Теоретически можно записывать рейтинги пользователей в таблицу плагина и потом уже поступать как и с остальными данными типа кол-ва комментов и постов.
Да, Вы правы. Можно сортировать с объединением таблиц, но сильно уж тяжелый запрос будет. Таким образом, можно добавить полей rating в таблицу wp_authors
Сможете обойтись без редактировании плагина. Просто при обновлении рейтинга в своем плагине, делаете еще что типа:
Осталось найти где это там отправляется, тот ещё тёмный лес, но спасибо, будем искать.
Привет, Спасибо за плагин. Мне кстати надо было сделать в выводе сортировку по рейтингу. Вот код (правда еще бы сделать постраничный вывод)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
masterit_top_authors();
$request = parse_str($_REQUEST['q']);
//Ïîëó÷àåì àäðåñ ñòðàíèöû àâòîðîâ, åñëè îïðåäåëÿåòñÿ íåïðàâèëüíî, çàìåíèòå íà ñâîé.
//Åñëè â âàøåé íàñòðéîêå WordPress óðë èìååþò âèä /%postname%/, òî æòà êîíñòðóêöèÿ äîëæíà àâòîìàòîì îïðåäåëèòü URL ñòðàíèöû, èíà÷å ïðîïèøèòå ðóêàìè.
$authors_uri = str_replace("?".$_SERVER['QUERY_STRING'], "",$_SERVER['REQUEST_URI']);
?>
<div id="post-">
Àâòîð
<?php
//Îôîðìëåíèå ñòîëáöîâ â çàâèñèìîñòè îò ñîðòèðîâêè
//Ñîðòèðîâêà ïî êîëè÷åñòâó ïîñòîâ
if( $_REQUEST['order'] == 'post_count' )
echo 'Ñòàòåé</a> v';
else
echo '<a href="'.$authors_uri.'?order=post_count" rel="nofollow">Ñòàòåé</a> ';
//Ñîðòèðîâêà ïî êîëè÷åñòâó ̳ñò
if( $_REQUEST['order'] == 'comment_count' )
echo '̳ñòî v';
else
echo '<a href="'.$authors_uri.'?order=comment_count" rel="nofollow">̳ñòî </a>';
//Ñîðòèðîâêà ïî âèä ä³ÿëüíîñò³
if( $_REQUEST['order'] == 'dt_login' )
echo 'Âèä ä³ÿëüíîñò³ v';
else
echo '<a href="'.$authors_uri.'?order=dijalnist" rel="nofollow">Âèä ä³ÿëüíîñò³ </a>';
//Ñîðòèðîâêà ïî ðåéòèíãó
if(!isset($_REQUEST['order']) || $_REQUEST['order'] == 'cpoints' )
echo 'Ðåéòèíã v';
else
echo '<a href="'.$authors_uri.'?order=cpoints" rel="nofollow">Ðåéòèíã </a>';
?>
<!-- ïîðÿäêîâûé íîìåð --> <td class="">
ID) > 10 ){ ?>
<!-- àâàòàð --> <td width="70" class=""><a href="/author/user_nicename?>/"></a>
<!-- èìÿ àâòîðà --> <td width="30%" class=""><a href="/author/user_nicename?>/">display_name?></a>
<!-- àâàòàð --> <td width="70" class="">
<!-- èìÿ àâòîðà --> <td width="30%" class="">display_name?>
<!-- Ñòàòòåé --> <td class="">ID)?>
<!-- ì³ñòî --> <td class="">misto?>
<!-- ijÿëüí³ñòü --> <td width="35%" class="">dijalnist?>
<!-- Ðåéòèíã --> <td class=""></a>
authors_count > 20 ){
?> 0 ) {
?><a href="?order= 20 ? '&offset=' .($_REQUEST['offset'] - 20 ) : '')?>">« Ïðåäûäóùàÿ ñòðàíèöà</a> <?php
if( $_REQUEST['offset'] authors_count ) {
?><a href="?order=&offset=">Ñëåäóþùàÿ ñòðàíèöà »</a>
?>
Упс((( а как сюда его вставить?
Код малость изковеркался, можно вставить в [code][?php ... ?][/code]
только скобки угловые, а не квадратные.
Если скролинг по страницам » предыдущая | следующая » не устраивает, можно взять любую функцию для скролинга по страницам, который используют в самом блоге (например http://wp-kama.ru/id_8/alternativa-wp-pagenavi-bez-lishnix-zaprosov-k-bd-ili-keshu.html ). Просто вместо количества постов использовать количество авторов (authors_count), и поменять урлы. Или проще найти совсем простые функции сроллинга, которые принимают в качестве параметров общее количество, сколько на страницу и т.д.
Здравствуйте! Немогу разобраться в установке. Сделал как написано, загрузил в папку plugins , активировал в админке, css добавил. Что делать с файлом authors.php ? я его загрузил в корневую директорию и запускаю, выводится ошибка «Fatal error: Call to a member function masterit_top_authors() on a non-object in /home/ka125/public_html/authors.php on line 8″
Проверил еще раз пошагово, все работает.
Какая у Вас версия WP?
в 3.3 с темой twentyeleven
раньше проверял в 2.9 и 3.1.2 тоже без проблем.
еще раз шаги:
1) Залить в wp-content/plugins
2) Активировать
3) Скачать файлик http://www.masterit.ru/wp-content/uploads/2011/07/authors.php_1.txt и перименовать в authors.php
4) положить в папку темы (wp-content/themes/twentyeleven)
5) В консоли Добавить страницу «Список авторов» и справа в Атрибутах страницы выбрать Шаблон «Authors»
6) Настроить стили
Благодарю! Я добавлял файл ауторс.пхп в публик_хтмл . Но теперь меня волнует другой вопрос. Вот таблица высветилась. А при нажатии на автора открывается несуществующая страница http://сайт.рф/author/тут_имя_автора/ Это так и должно быть? Можно ли как нибудь сделать что бы при нажатии на автора открывался список статей его?
Вот с этим очень хорошо организовано в ЛайфТип, но там много непонятного для авторов статей при публикации. А в вордпресс всё хорошо, но это не продумано
для отображения страницы автора со статьями должен быть создан файл шаблона author.php
в стандартной теме twentyeleven он есть, если в Вашей теме нет, можно создать его самому http://codex.wordpress.org/Author_Templates
Этот файл есть, но тогда вопрос возникает как его применить, что бы при нажатии в таблице со списком авторов по имени автору открывался архив со статьями этого автора?
Вот когда читаешь статью, и с низу под статьёй жмёшь наимя автора, то этот архив открывается.
Список записей автора показывается обычным loop
Вот там же http://codex.wordpress.org/Author_Templates внизу есть Sample Template File
и все что начиная от Posts by …
и заканчивая /ul и есть список статей автора.
Обычный loop обычный для тех кто в теме, для меня всё что выше html уже не обычно. Немогли бы Вы подсказать куда вставить эту строчку
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<ul>
<!-- The Loop -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
<?php the_title(); ?></a>,
<?php the_time('d M Y'); ?> in <?php the_category('&');?>
</li>
<?php endwhile; else: ?>
<p><?php _e('No posts by this author.'); ?></p>
<?php endif; ?>
<!-- End Loop -->
</ul>
Вставил в authors.php ничего не произошло. Да и в Вашем коде в файле авторс.пхп прокомментированн код, который должен выводить ссылки на страницы авторов, если у них статей больше чем 0. Почему этот код не выводит?
Обратите внимание:
Для списка авторов создаем файл authors.php
Для страницы автора author.php
Т.е. приведенный код вам нужно вставить в author.php из своей темы
О, благодарю! На самом деле всё уже было сделано Вами в файле ауторс.пхп, просто у меня пути не совпадали, так как у меня скрипт расположен не в начальной директории а во вложенной папке, то всего-то надо было дописать в путях в строках 51 и 52 имя папки, в которой скрипт стоит.
такой вопрос,всё установилось хорошо и работает!спасибо,но хотелось бы выводить в таком порядке – в самом верху всегда что бы выводился администратор сайта потом авторы статей а уж потом простые участники сайта(а не у кого статей больше,в принципе авторов можно выводить и у кого статей больше будет стимул для них,а вот администратора сайта в самом верху нужно!) и ещё такой вопрос как реализовать на странице автора вывод его последних комментариев(пока выводится только его последние статьи) спасибо жду с нетерьпеньем ответ.Дмитрий
Вопрос интересный. Реализовать можно, хотя и кривовато. Сейчас есть поле user_role в wp_authors, если сортировать прямо по этому полю, то так и отсортируются: administrator, author, user …
Поэтому в строку
можно добавить в сортировку при выводе. Будет:
Перед этим добавить индекс в таблицу: ALTER TABLE `st_authors` ADD INDEX ( `user_role` );
Конечно, это временное решение. Нужно учесть редактирование профиля пользователя (например пользователь стал автором). А часто есть редактор в блоге и это уже будет неправильная сортировка. Надо менять на цифры (1 – administrator, 2 – editor, 3 – author …)
По поводу комментариев: http://codex.wordpress.org/Function_Reference/get_comments
Внизу страницы примеры.
только $args будет примерно таким:
почему то выводит все комментарии сайта,а не одного пользователя!
Тогда можно попробовать так:
2
3
4
5
6
7
8
$args = array( 'ID' => $curauth->ID );
$comments = get_comments();
?><ul><?php
foreach($comments as $comment) :
echo '<li>'. $comment->comment_content . '</li>';
endforeach;
?></ul><?php
всё равно выводит все комментарии всего сайта и ещё хотелось бы что бы выводимые комменты были кликабельны.
С Новым Годом)) Извиняюсь за молчание. Вероятно неверно ID пользователя определяется, надо смотреть шаблон. Если еще не разобрались, вышлите файл author.php на E-mail alex@balin.su
отправил вам свой файл!
Вставил код в шаблон, проверил на своем тестовом блоге, работает.
Результат отправил
2
3
4
5
6
7
8
9
10
<ul>
<?php
$comments = get_comments(array('user_id' => $curauth->ID, 'status' => 'approve' ));
foreach( $comments as $comment ){
$post = get_post($comment->comment_post_ID);
?><li><?php echo $comment->comment_content ?> к статье <a href="<?php echo $post->guid?>"><?php echo $post->post_title ?></a></li><?php
}
?>
</ul>
AlexeyBalin – спасибо большое вы настоящий мастер!!!респект -всё заработало хорошо!вот только смайлики поставленные в комментариях не выводятся в author.php!!выводятся почему то просто что то типа то кого
Тогда можно заменить
на
или посмотреть файлик comments.php в шаблоне и взять оттуда то, что внутри «foreach( $comments as $comment): » убрать лишнее и вставить в author.php в этот же foreach
ну здесь то вывелся смайлик в конце!а там типа :_cry_: только без подчёркивания!
и почему то в файле вашем authors.php комментарии пользователей всегда 0,а у администратора меняется всё как нужно!как это можно исправить?
Да, проверил и убедился, комменты не правильно считаются. Скоро выложу исправленную версию.
Можно вручную обновить количество комментов, для этого просто выполнить sql код в phpMyAdmin или консоли mysql:
Выложил обновленную версию http://www.masterit.ru/wp-content/uploads/2012/01/masterit-authors2-1.1.1.zip
Теперь будет производится полный пересчет для всех авторов раз в сутки.
получилось теперь смайлики выводятся нормально!а такой вопрос сколько последних комментариев будет выводится и если все то как сделать например что бы только последние 10!
вот такой вопрос как сделать что бы в файле author.php – то есть на странице автора встроить комментарии как на обычной странице?то есть зайдя на страницу автора можно было ему лично написать комментарий(ну типа послание)и именно на его страничке?думаю задумка прикольная!помогите если есть такая возможность!
Меня тоже это интересует!
Да идея интересная, но реализовать ее стандартными средствами не получится (по-крайней мере я не знаю). Дело в том, что комментарии в WP привязываются к странице или записи из таблицы wp_posts, а страница пользователя не зарегистрирована в этой таблице. Можно добавлять страницы пользователей в базу, но это надо писать специальный плагин (может правда стоит подумать над этим?).
Можно реализовать с помощью сторонних сервисов, а-ля disqus.com – там просто добавляется JS код на страницу и к ней выводятся комментарии. Есть и другие подобные сервисы.
сторонние сервисы не подходят,может как то сделать что бы при регистрации создавалась отдельная страница и привязывалась к одному пользователю а там уж можно реализовать хоть что!или как то реализовать личные сообщения пользователей но лучше бы кончно комментарии привезать!
Тогда, действительно, надо написать плагин для этого (хотя сперва поищу готовый). Подумаю на эту тему. Сперва выложу обновление для этого плагина, а затем возьмусь за следующий)))
Спасибо! Будем ждать)
после установки новой версии вся админка wordpress стала не читаема,одни иероглифы типа слитает кодировка!!!пока старую версию оставил!жду ответа!
Ранее пробовал на нескольких установленных WP, все сработало, сейчас установил на вновь установленный WP нет проблем.
Какая у Вас версия WP и какие еще плагины стоят?
Огого)) понял буду тестить где конфликт или что там вылазит
Не нашел никаких проблем с кодировкой. Возможно ли, что какой-то файл обновился не полностью? Скажем связь с FTP оборвалась.
как обновить правильно?нужно старый удалить польностью и базу данных или как?
Нет базу удалять не нужно, только обновить файлы *.php
странно обновился автоматически из обновления плагинов в wordpress,после активации плагина вся админка становится не читаема,одни карякули ,кодировка сбивается,после возращения старых файлов первой версии все становится нормально,не могу понять в чём дело(((
не помогло,вернул старую версию всё стало в админке нормально!!!
не помогло вернул старые файлы в админке стало всё нормально!
Буду искать, что еще может быть… пока что не представляю даже куда копать
при обновлении плагина пишет – Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, ‘masterit_authors_list::add_dashboard_widgets’ was given in /home/*/***/public_html/wp-includes/plugin.php on line 405
Блин! спасибо, нашлась. Почему у меня не показывалась… сейчас выложу обновление
Выложил обновленную версию
http://www.masterit.ru/wp-content/uploads/2012/01/masterit-authors-list.zip
На Wp тоже обновилось