Как изменить ссылки комментатора на / user / user_id?

Я хотел бы изменить ссылки для комментариев, как показано на этом скриншоте:

Скриншот

В моем тестовом плагине в GitHub я сначала попробовал следующий код:

define('PROFILE', '<a href="/user/%s" rel="external nofollow" class="url">%s</a>'); function get_comment_author_link($cid) { $uid = get_comment_author($cid); return sprintf(PROFILE, $uid->ID, $uid->name); } add_action('get_comment_author_link', 'get_comment_author_link'); 

Но затем, изучив файл wp-includes/comment-template.php я понял, что аргумент get_comment_author_link не является идентификатором комментария, а строкой, содержащей <a href="...">...</a> и, следовательно, я не могу использовать этот крючок для своей цели (потому что идентификатор пользователя не может быть найден в hook).

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

Solutions Collecting From Web of "Как изменить ссылки комментатора на / user / user_id?"

Вы можете использовать get_comment_author_link , который является частью get_comment_author_link() шаблона get_comment_author_link() , как уже get_comment_author_link() ваш вопрос. Тогда вам нужно получить только соответствующий user_id , который можно сделать через глобальный $comment и построить соответствующую ссылку.

Примерное использование, как показано ниже:

 add_filter( 'get_comment_author_link', 'wpse144835_custom_comment_author_link' ); function wpse144835_custom_comment_author_link( $link ) { global $comment; $comment_user_id = $comment->user_id; // code to create the new link return $new_link; } 


Редактировать:

Отвечая на ваши вопросы, соответствующий комментарий, к сожалению, удален, поэтому сейчас это своего рода информационный список. Там много, слишком много, чтобы действительно ответить на них, но я даю вам дополнительную информацию:

  • Поскольку у нас есть глобальный доступный, вы можете использовать $comment->comment_author

  • Что касается функций, вы можете использовать get_comment_author() или comment_author() зависимости от необходимости return или echo .

  • В Codex: Global Variables вы можете получить обзор о них

  • Существует WP_Comment_Query и Walker_Comment

  • Например, на странице comment_author codex представлен список функций, связанных с комментариями

  • Кроме того, я бы предложил вам просмотреть comment-template.php и comment.php чтобы узнать больше обо всем этом

Вывод этой функции – это тег-тег, содержащий ссылку на профиль автора, его ввод определенно является идентификатором.

Если вы хотите изменить вывод этой функции, вам нужен фильтр, и вам нужно будет str_replace a-tag (или аналогичный метод, действующий на строку). (см., где изменить get_comment_author_link ()? )

Я думаю, что более важный вопрос: что именно вы пытаетесь достичь здесь?

Теоретически связь комментаторов может быть реализована по-разному в каждой теме / плагине. Это можно сделать с помощью get_comment_author_url () или получить прямо из объекта комментария с помощью get_comment () или любым другим способом.

Однако, чтобы изменить вывод get_comment_author_link (), см. Пример выше.

Не могли бы вы попробовать:

  $id = get_comment( get_comment_ID() )->user_id; 

Я просто нашел это решение во время поиска в Интернете, но у меня нет среды для его проверки.