A filtragem de comentários permeia quando uma condição é atendida

4

Eu não consigo descobrir como filtrar o comentário permalink em determinada página do WP que eu uso assim:

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

... para que todos os permalinks de comentários dentro da página possam ser alterados:

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

para isso:

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

Em suma, estou tentando alterar a estrutura de url apontando para o permalink da página, excluindo o site_url (front page url) e o comment slug (por exemplo # comment-n)

Até agora, testei o exemplo no filtro comment_link e nada acontece aqui:

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 );

Eu estou fazendo errado, parece, e certamente aprecio qualquer ajuda.

    
por 58YtQ2H83m17838963l61BU07Y8622 28.05.2016 / 14:40

2 respostas

1

Encontrei uma solução exata que estou procurando.

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' );

Ele faz exatamente o que eu estou procurando: ele substitui o Permalink da página pelos permalinks dinâmicos quando eu chamo o filtro.

    
por 58YtQ2H83m17838963l61BU07Y8622 01.06.2016 / 11:57
1

Eu não tenho certeza do que você está tentando realizar, mas aqui está o que eu acho. Normalmente você geraria um link para um comentário como este:

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

O problema com filtragem get_permalink() é que o filtro deve saber que é chamado pela seção de comentários dentro de uma página, não outra parte da mesma página. Não há uma maneira óbvia de fazer isso, exceto se você ignorar o sistema de filtragem interno e chamar sua função no momento:

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

Lembre-se de que você também deve ter algum redirecionamento, para que o WP entenda o link permanente. Além disso, essa abordagem significa que clicar no link permanente do comentário na página fará com que a página seja recarregada, porque é um URL diferente.

    
por cjbj 28.05.2016 / 17:11