Ссылка на комментарий с учётом страницы в многостраничной ленте комментариев
Имеется виджет, выводящий последние комментарии и имеется многостраничная лента комментариев. Ссылки на комментарии в виджете имеют вид page_id=170#comment-2153, но так как в ленте насколько страниц, то при переходе по ссылке перехода к самому комментарию не происходит, так как для этого нужна ссылка типа page_id=170&cpage=13#comment-2153
Вопрос - как исправить ситуацию, чтобы любые линки на комментарии в виджете (да и вообще везде на сайте) формировались с учётом страницы?
Связанный с ним вопрос - можно ли настроить систему так, чтобы при наведении курсора на ссылку, ведущую к комментарию, текст комментария полностью всплывал в модальном окне?
Вам нужно отредактировать код виджета.
Собрать правильную ссылку поможет функция get_comments_link()
Весь текст комментария можно получить с помощью get_comment_text()
Спасибо за ответ. Но что-то я совсем запутался. Дело в том, что такая же ошибка присутствует в стороннем плагине, выводящем оповещения о комментариях и ответах на них, что наводит на мысль об ошибках в глобальных настройках.
Изучил по вашим ссылкам, дошёл в результате до кодекса wordpress и файла comment-template.php который, вроде и отвечает в т.ч. за получение ссылок для виджетов. И застрял. Чисто теоретически там ошибок быть не дОлжно.Однако ж...
Я так понимаю глобально зв получение интересующей меня ссылки отвечает вот этот участок.
function get_comments_link( $post_id = 0 ) { $hash = get_comments_number( $post_id ) ? '#comments' : '#respond'; $comments_link = get_permalink( $post_id ) . $hash; /** * Filters the returned post comments permalink. * * @since 3.6.0 * * @param string $comments_link Post comments permalink with '#comments' appended. * @param int|WP_Post $post_id Post ID or WP_Post object. */ return apply_filters( 'get_comments_link', $comments_link, $post_id ); } /** * Display the link to the current post comments. * * @since 0.71 * * @param string $deprecated Not Used. * @param string $deprecated_2 Not Used. */ function comments_link( $deprecated = '', $deprecated_2 = '' ) { if ( !empty( $deprecated ) ) _deprecated_argument( __FUNCTION__, '0.72' ); if ( !empty( $deprecated_2 ) ) _deprecated_argument( __FUNCTION__, '1.3.0' ); echo esc_url( get_comments_link() ); }но сообразить что тут не так я не могу. Либо я не туда залез.
Кстати, изначально искал аналог в файлах темы - не нашёл.
Хотел сначала отредактировать предыдущий коммент, потом подумал, что если вдруг его кто-то уже видел - просто внесу путаницу. Посему добавлю новым комментом.
Я целый день изучал коды и эксперементировал. Нашёл у себя в системе ещё один виджет, который аналогичен по функциям - выводит последние комменты. Подключил - и о чудо - он генерирует правильные ссылки. Значит всёже дело в виджете и плагине оповещения.
У правильно работающего виджета всё достаточно просто:
а вот у работающего через "ж" я так и не нашёл нужной строчки, но не это важно - виджеты можно поменять. А вот с плагином оповещения сложнее. Строки, отвечающие за вывод ссылки выглядит так
'notice_subject'=>'Ответ на комментарий', 'notice_content'=>'Пользователь <a href="'.get_author_posts_url($comment->user_id).'">'.get_the_author_meta('display_name',$comment->user_id).'</a> ответил на ваш <a href="'.get_permalink($comment->comment_post_ID).'#comment-'.$comment->comment_ID.'">комментарий</a>'я знаю что последняя, но привёл весь блок целиком на всякий случай. И я не могу сообразить как правильно пересобрать нужный код. Вернее дважды пробовал и wordpress благосклонно отключал плагин. Ошибка.
Вся надежда на вас.
Я понимаю, что логичнее было бы обратится к авторам, но они меня тупо игнорируют неделю. Как я понял по общению с ними по другим вопросам "в мире бесплатного если что-то работает у них, но не работает у других - это исключительно проблемы "других"".
PS. Здесь же мне надо вывести сам текст комментария - после оповещения. Я был бы крайне благодарен если бы вы помогли мне правильно это сделать. Самостоятельные попытки приводили либо к ошибке синтаксиса, либо к отключению плагина.
'Пользователь <a href="'.get_author_posts_url($comment->user_id).'">'.get_the_author_meta('display_name',$comment->user_id).'</a> ответил на ваш <a href="' . esc_url( get_comment_link( $comment ) ) . '">комментарий</a>'Огромаднейшее спасибо - работает. Я сам пытался что-то вроде этого собрать, но мозгов не хватило убрать из ссылки лишнее.
Одно непонятно - зачем авторы такую сложную конструкцию создали, когда можно было бы проще.
Насчёт вывода текста - подскажите? (тут должен быть краснеющий смайлик, потупивший очи долу)