web-dev-qa-db-fra.com

Filtrage des commentaires permaliens lorsqu'une condition est remplie

Je n'arrive pas à comprendre comment filtrer le commentaire de façon permanente sur certaines pages WP que j'utilise comme ceci:

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

... de sorte que tous les permaliens de commentaires à l'intérieur de la page puissent être modifiés à partir de ceci:

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

pour ça:

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

En bref, j'essaie de changer la structure de l'URL en pointant vers le permalien de la page, en excluant le site_url (url de la page d'accueil) et le slug de commentaires (par exemple # comment-n)

Jusqu'ici, j'ai essayé l'exemple du filtre comment_link et rien ne se passe ici:

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

Je me trompe, semble-t-il, et j'apprécierais certainement toute aide.

J'ai trouvé une solution exacte que je cherche.

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

Il fait exactement ce que je recherche: il remplace la page Lien permanent par les liens permanents dynamiques lorsque j'appelle le filtre.

Je ne suis pas tout à fait sûr de ce que vous essayez d'accomplir, mais voici ce que je pense. Normalement, vous générez un lien vers un commentaire comme celui-ci:

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

Le problème avec le filtrage get_permalink() est que le filtre doit savoir qu'il est appelé par la section de commentaires à l'intérieur d'une page et non par une autre partie de la même page. Il n'y a pas de moyen évident de le faire, sauf si vous contournez le système de filtrage intégré et appelez votre fonction sur-le-champ:

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

N'oubliez pas que vous devez également avoir une redirection en place, donc WP comprendra le lien permanent. En outre, cette approche signifie que cliquer sur le lien permanent du commentaire dans la page provoquera le rechargement de la page, car il s'agit d'une URL différente.

1
cjbj