过滤评论在满足条件时永久链接

时间:2016-05-28 作者:58YtQ2H83m17838963l61BU07Y8622

我不知道如何在我这样使用的特定WP页面上过滤评论permalink:

if(condition is met) {
  (filter the comment url)
}
。。。因此,可以从此更改页面中的所有注释永久链接:

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

http://example.com/new-slug/#comment-n
简而言之,我正在尝试更改指向页面permalink的url结构,不包括site_url (首页url)和comment slug (例如#注释-n)

到目前为止,我已经在comment_link filter 这里什么都没有发生:

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 );
看来我做错了,我当然会感激你的帮助。

2 个回复
最合适的回答,由SO网友:58YtQ2H83m17838963l61BU07Y8622 整理而成

我找到了一个确切的解决方案。

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\' );
它正是我想要的:当我调用过滤器时,它将页面永久链接替换为动态永久链接。

SO网友:cjbj

我不完全确定你想完成什么,但我想是这样的。通常,您会生成一个指向以下注释的链接:

echo \'<a href="\' . get_permalink($comment->comment_post_ID) . \'#comment-\' . (strval($comment->comment_ID)) . \'">\';
问题在于filtering get_permalink() 过滤器必须知道它是由页面内的注释部分调用的,而不是由同一页面的另一部分调用的。没有明显的方法可以做到这一点,除非您绕过内置的过滤系统并当场调用您的函数:

$permalink = my_comment_link_filter (get_permalink($comment->comment_post_ID));
echo \'<a href="\' . $permalink . \'#comment-\' . (strval($comment->comment_ID)) . \'">\';
记住,您还必须有一些重定向,以便WP能够理解永久链接。此外,这种方法意味着单击页面中的永久链接将导致页面重新加载,因为它是一个不同的url。

相关推荐

Help with comments.php

我有一个带有短代码的页面,显示数据库中的信息。我已将其设置为允许在页面上发表评论。我遇到的问题是,当我单击“提交评论”时,我会收到以下消息:注意:事件中未定义索引:id。php在线989这一行从用户单击以访问此页面的链接中获取id,这很好。是否有方法通过注释传递此id。php页面以确保页面加载正常?以下是评论。php代码:if (have_comments()) { wp_list_comments(\'\'); } $comments_args = array(