Intereting Posts
Пользовательский тип сообщения с родительской страницей? Возможное? Изменение пользовательской ссылки на логотип Автоматически задавать изображение с первого URL (или тега) первого изображения в статье wp media_handle_upload не работает Запуск функции при создании нового сайта в WordPress Multisite Как показать содержимое сообщения, прежде чем читать больше тегов (выдержка) для сообщений с защитой паролем? Совместное использование шаблонов с помощью API JSON? как сохранить возможность модифицировать сообщение после применения фильтра post_type_link? Доступ для добавления подстраниц, но не для страниц is_home не влияет на контент Страница в качестве родителя для CPT и других страниц Мне нужно изменить черновики с использованием пользовательских данных из базы данных, а затем опубликовать их Страница внутри пользовательского типа (URL-адрес переписать?) Как конвертировать мой сайт WordPress в агностикцию домена? WordPress Multisite – тема автоматической активации

Фильтрация комментариев по запросу при условии выполнения условия

Я не могу понять, как фильтровать постоянную ссылку комментария на определенной странице WP, которую я использую следующим образом:

if(condition is met) { (filter the comment url) } 

… так что все комментарии могут быть изменены в пределах страницы:

 http://example.com/slug-to-page/#comment-n 

к этому:

 http://example.com/new-slug/#comment-n 

Короче говоря, я пытаюсь изменить структуру url, указывающую на постоянную ссылку страницы, исключая site_url (URL главной страницы) и пул комментариев (например, # comment-n)

До сих пор я пробовал пример в фильтре comment_link, и здесь ничего не происходит:

 function my_comment_link_filter( $link ) { $link = str_replace( get_permalink() , $new_permalink_structure , $link ); return $link; } add_filter( 'comment_link', 'my_comment_link_filter', 10, 3 ); 

Кажется, я делаю это неправильно и, безусловно, буду признателен за любую помощь.

Я не совсем уверен, чего вы пытаетесь достичь, но вот что я думаю. Обычно вы создадите ссылку на комментарий следующим образом:

 echo '<a href="' . get_permalink($comment->comment_post_ID) . '#comment-' . (strval($comment->comment_ID)) . '">'; 

Проблема с фильтрацией get_permalink() заключается в том, что фильтр должен знать, что он вызывается секцией комментариев внутри страницы, а не другой частью той же страницы. Нет очевидного способа сделать это, за исключением случаев, когда вы обходите встроенную систему фильтрации и вызываете свою функцию на месте:

 $permalink = my_comment_link_filter (get_permalink($comment->comment_post_ID)); echo '<a href="' . $permalink . '#comment-' . (strval($comment->comment_ID)) . '">'; 

Помните, что вы также должны иметь некоторую переадресацию на место, поэтому WP поймет постоянную ссылку. Кроме того, этот подход означает, что нажатие на постоянную ссылку комментария на странице приведет к перезагрузке страницы, потому что это другой URL-адрес.

Я нашел точное решение, которое я ищу.

 function my_comment_link_filter( $link ) { $link = str_replace( get_permalink() , $custom_permalink , $link ); return $link; }; add_filter( 'get_comment_link', 'my_comment_link_filter' ); 

Он выполняет именно то, что я ищу: он заменяет постоянную ссылку на страницу динамическими константами, когда я вызываю фильтр.