Фильтр respond_link
изменяет ссылку для перехода к форме комментирования в записях, у которых еще нет комментариев. По умолчанию эта ссылка ведет к якорю #respond
, который автоматически прокручивает страницу к форме добавления комментария.
При помощи этого фильтра можно кастомизировать URL или добавить собственный якорь, чтобы выделить форму для комментирования или направить пользователя на определенный элемент страницы.
apply_filters( 'respond_link', string $respond_link, int $post_id )
$respond_link
(string) — URL по умолчанию, ведущий к форме комментирования.$post_id
(int) — ID поста, для которого генерируется ссылка.
Использование
Чтобы использовать этот фильтр, необходимо добавить функцию, которая принимает URL по умолчанию и ID поста, а затем возвращает измененную ссылку. В некоторых случаях можно использовать разные ссылки для конкретных постов или добавить кастомный якорь.
add_filter( 'respond_link', 'my_custom_respond_link', 10, 2 );
function my_custom_respond_link( $respond_link, $post_id ) {
// Изменяем ссылку для конкретного поста
return $respond_link;
}
Пример #1: Добавление кастомного якоря для определенного поста
Этот пример показывает, как изменить ссылку, чтобы форма комментирования имела кастомный якорь. Например, для поста с ID 345
изменим якорь на #custom-comment-box
.
add_filter( 'respond_link', 'custom_respond_link_for_specific_post', 10, 2 );
function custom_respond_link_for_specific_post( $respond_link, $post_id ) {
if ( $post_id === 345 ) {
// Ссылка с кастомным якорем для поста с ID 345
$respond_link = get_permalink( $post_id ) . '#custom-comment-box';
}
return $respond_link;
}
Теперь ссылка для поста с ID 345
будет вести к #custom-comment-box
вместо стандартного #respond
.
Пример #2: Изменение ссылки на форму комментирования для всех постов
Если необходимо использовать кастомный якорь для всех записей на сайте, можно изменить ссылку глобально:
add_filter( 'respond_link', 'global_custom_respond_link' );
function global_custom_respond_link( $respond_link ) {
// Добавляем свой якорь ко всем ссылкам формы комментирования
$respond_link = get_permalink() . '#global-comment-section';
return $respond_link;
}
Этот код обновляет все ссылки формы комментирования и добавляет якорь #global-comment-section
.
Пример #3: Добавление параметров к ссылке на форму комментирования
Чтобы добавить параметры для отслеживания кликов или проведения A/B тестов, можно расширить ссылку на форму комментирования дополнительными параметрами.
add_filter( 'respond_link', 'tracking_parameter_respond_link', 10, 2 );
function tracking_parameter_respond_link( $respond_link, $post_id ) {
$tracking_code = '?source=comments_button';
// Добавляем параметры к ссылке
$respond_link = get_permalink( $post_id ) . '#respond' . $tracking_code;
return $respond_link;
}
Теперь каждая ссылка будет содержать ?source=comments_button
в URL, что может помочь при анализе пользовательских действий.
Пример #4: Условное изменение ссылки в зависимости от типа поста
Если на сайте используется несколько типов записей (например, посты и кастомные записи), можно изменить ссылку на форму комментирования только для определенного типа.
add_filter( 'respond_link', 'conditional_respond_link_for_post_type', 10, 2 );
function conditional_respond_link_for_post_type( $respond_link, $post_id ) {
$post_type = get_post_type( $post_id );
if ( $post_type === 'review' ) {
// Ссылка для постов типа "review"
$respond_link = get_permalink( $post_id ) . '#review-comment-form';
}
return $respond_link;
}
В этом случае все записи типа review
будут иметь ссылку на якорь #review-comment-form
.
Заключение
Хук respond_link
— это полезный инструмент для настройки ссылок на форму комментирования в WordPress. Он позволяет гибко изменять стандартную ссылку для перехода к комментированию и добавлять нужные параметры для различных целей, будь то SEO, аналитика или удобство пользователей.