修改 'functions.php' 中的 WordPress 插件功能

Eri*_*ans 2 php wordpress function

我需要从我正在使用的 WordPress 插件中更改函数的值。

如果我在原始插件文件中执行它,它可以完美运行,但我宁愿将它放在文件functions.php 中以避免插件更新出现问题。

我需要改变这个:

public static function loop_shop_per_page() {
    return get_option( 'posts_per_page' );
}
Run Code Online (Sandbox Code Playgroud)

进入这个:

public static function loop_shop_per_page() {
    return '-1';
}
Run Code Online (Sandbox Code Playgroud)

我将如何在文件functions.php 中创建一个过滤器来做到这一点?

小智 8

不改变核心插件代码,我认为你不能实现你想要的。

编写良好的插件通常会apply_filters调用任何可能需要由主题开发人员调整的方法。因此,插件代码如下所示:

// Using apply_filters() to allow overriding of values...
public static function loop_shop_per_page() {
    $value = get_option( 'posts_per_page' );
    return apply_filters('filter_loop_shop_per_page', $value);
}
Run Code Online (Sandbox Code Playgroud)

然后,在您的functions.php文件中,您可以通过添加这样的过滤器来更改该值:

add_filter('filter_loop_shop_per_page', 'mytheme_loop_shop_per_page');

function mytheme_loop_shop_per_page($value){
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,除非您编辑插件代码,否则您可能无法做您想做的事。您可以随时搜索插件,apply_filters看看是否还有其他可以调整的内容来实现相同的结果。