撤消Wordpress中没有(看似)挂钩动作的功能?

时间:2013-09-13 10:02:04

标签: wordpress function wordpress-theming

我需要在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 );
}

但由于它没有连接到“动作钩子”,我不知道如何“撤消”或“覆盖”它。

1 个答案:

答案 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。