В первую очередь, хочу поздравить всех форумчан с Днем Победы!
Ну и к сути проблемы: как известно, WordPress умеет выводить список последних комментариев блоком в сайдбаре (а точнее, список ссылок на последние комментарии).
На имеющемся у меня сайте эти ссылки имеют следующий вид: http://moi-sait.net/?p=149#comment-12
Сама функция выводится кодом:
<li><h2>Recent Comments</h2>
<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,30) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author)
.":" . "<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"on " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a></li>";
}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;?>
</li>
Хотелось бы, что ссылки вели не к последнему коментарию, а просто на страницу поста, т.е. имели вид:
http://moi-sait.net/?p=149 (без #comment-12 и т.п.)
Как правильно исправить код? По совету с другого форума пытался удалить из кода все упоминания comment_ID – не помогло…
$output .= "\n<li>".strip_tags($comment->comment_author)
.":" . "<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"on " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a></li>";
Красное – удалить.
Удалил – не помогло… Ссылки выглядят как и раньше. А может быть это как-то связанно с тем, что у меня навигация (вкл. список последних комментариев) выводится виджетами?
Вы сначала разберитесь, "выводится кодом" или "выводится виджетами", а потом спрашивайте что менять.
Неверно сформулировал. Исполняется кодом, а вот вызывается – виджетом. Соответственно, если в настройках темы добавить в сайдбар виджет "Последнии коментарии", то они будут отображаться. Тем не менее, сам код, приведенный выше, прописан в теме (в файле sidebar.php).
Если это код от виджета, то изменения должны быть видны.
Сам код взят из sidebar.php Он заключен в функцию:
Так, сейчас взял и вынес весь приведенный код за пределы php if/php endif, отключил вывод виджета "Последние коментарии" и удалил "#comment-" . $comment->comment_ID в коде сайдбара. Как результат, ссылка теперь выводится нужным мне образом. Но… возник другой вопрос: где в WP лежат коды виджетов? Т.е., где нужно редактировать код функции выводимой виджетом?
Забудьте про свой другой вопрос. Если уже умеете обходится без виджетов, то и обходитесь без них. По крайней мере, при таком подходе при апдейте движка Вам не придется вспоминать какой файл и как подвергся хаку.
2 вопроса.
1- как сделать что бы ссылка ведущая к тебе с комментариями была не на авторе а на тексте комментария?
2- Сейчас
admin
: Тест…
А нужно
admin: Тест…
код в самом начале темы.