重写子主题中插件的筛选器

时间:2020-07-01 作者:Loc_rabbirt

我有一个插件文件中的过滤器:

$review_num_fetch = apply_filters(\'tourmaster_review_num_fetch\', 5);
我想把数字从5改为3,我试过如下更改:

// reviews number
function tourmaster_review_num_fetch_custom () {
    $review_num_fetch = apply_filters(\'tourmaster_review_num_fetch_custom\', 3);
}

remove_filter(‘tourmaster_review_num_fetch’, 10);
add_filter(\'tourmaster_review_num_fetch\', \'tourmaster_review_num_fetch_custom\', 10);
但这是错误的。我不知道为什么,我希望能得到一些解释,蒂亚!

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

过滤器不是这样工作的。就像现实生活中的过滤器一样,有些东西进去了,它变了,结果出来了。过滤器always 接受一个参数并返回一些内容。这是一个改变的机会

因此,如果我们这样做:

$review_num_fetch = apply_filters(\'tourmaster_review_num_fetch\', 5);
这意味着插件使用5,but 它为其他代码提供了将其更改为其他值的机会。它通过将其传递给tourmaster_review_num_fetch 过滤,然后使用结果。因此,钩住该过滤器并返回不同的值来更改它。

当该行运行时,WP查看所有注册的过滤器,传递值,然后用过滤器返回的值替换它。

这是向值中添加1的过滤器的外观:

function addone( $in ) {
    $out = $in + 1;
    return $out;
}
您可以这样添加它:

add_filter( \'tourmaster_review_num_fetch\', \'addone\' );
这样,您就应该拥有实施解决方案所需的所有知识

相关推荐

static array on functions.php

在函数中。php中,我想访问数据库一次,以获取一个ACF对象,然后在本地“保存”它,以防止对数据库的进一步请求。我想首先在“init”钩子中调用以下函数。然后,假设,当我在以后的挂钩上调用它时,由于使用了“static”关键字,$current\\u store var已经设置好了,函数将在第一个“if”返回已经保存的静态var时停止。它不起作用-当访问稍后挂钩上的函数时,“isset($current\\u store)”返回false。我做错了什么?function get_current_store