我需要在wp-includes\comment-template.php
function get_comments_link($post_id = 0) {
return apply_filters( 'get_comments_link', get_permalink( $post_id ) . '#comments', $post_id );
}
到这个
function get_comments_link($post_id = 0) {
return apply_filters( 'get_comments_link', get_permalink( $post_id ) . '#disqusthread', $post_id );
}
但由于它没有连接到“动作钩子”,我不知道如何“撤消”或“覆盖”它。
答案 0 :(得分:0)
嗯,这是一个过滤器钩子。每当您在核心代码中找到do_action()
或apply_filters()
时,您就有机会修改行为或执行自定义代码。
动作挂钩允许我们在do_action
点运行某些东西,它们不会返回任何内容。过滤器钩子允许我们修改apply_filters()
点处使用的输出或参数,我们必须在回调函数中返回一些内容。
见Actions and filters are not the same thing。
挂钩遵循惯例add_HOOK( 'hook-name', 'callback_function', PRIORITY, NUM_PARAMETERS );
。
在OP情况下,它应该像(在functions.php中)一样使用:
add_filter( 'get_comments_link', 'callback_so_18783534', 10, 2 );
function callback_so_18783534( $link, $post_id ) {
return get_permalink( $post_id ) . '#disqusthread';
}
经过测试,我发现没有评论的帖子没有应用此过滤器(通过comments_link()
)。 It is hardcoded并且没有可用的钩子。看起来唯一的解决方案是jQuery。