删除由 Wordpress 中的插件添加的操作

Removing action added by a plugin in Wordpress

我正在使用 Wordpress 的 Popup Maker 插件,我试图阻止它使用子主题的 functions.php 文件加载到特定页面上。

我在插件的目录中找到了 popup-maker.php 文件,该文件末尾包含以下行:

 add_action( 'plugins_loaded', 'popmake_initialize', 0 );

如果我删除/注释这一行,弹出窗口将不会触发,所以我想这是我需要删除的操作。我已经阅读了 WP codex 和许多帖子,但仍然无法正常工作。

现在我被困在这个(我在我的子主题的 functions.php 文件中添加的功能):

function remove_popmaker() {
    remove_action('plugins_loaded', 'popmake_initialize', 0);
    }

add_action( 'init', 'remove_popmaker', 1 );

PS:我正在使用 shopkeeper 主题和 Woocommerce。

感谢所有帮助,谢谢。

您正在向 plugins_loaded 之后的 init 添加一个动作,因此您无法在 运行 之后删除一个动作。

您可以尝试相同的操作,但您必须从插件中执行此操作

remove_action( 'plugins_loaded', 'remove_popmaker', 0 );

但我怀疑在你之前添加的操作将在 运行 之后,这可能是不可预测的,否则你可能必须编写一个 MUplugin(google 这个)。

我有办法做到这一点:

add_action('wp', 'disableEmailPopup');
function disableEmailPopup () {
    global $post;
    if ($post->ID === 11625249) return remove_action( 'wp_enqueue_scripts', 'popmake_load_site_scripts');
}

@BMM - 在不知道为什么需要在一个页面上禁用整个插件的用例的情况下,很难给你最好的答案。

例如,如果您只是想让单个弹出窗口不显示在一个页面上,您可以使用条件面板使用 (!) 按钮添加否定条件。单击它使其变为红色,您将检查与条件相反的情况,因此 (!) Page Selected: Page xyz 会阻止它加载到该页面上。

或者您可以 create your own custom conditions 允许您将该条件添加到任何弹出窗口。

最后,如果您只想从前端解开它,您只需删除渲染和脚本处理程序

remove_action( 'wp_footer', 'popmake_render_popups', 1 );
remove_action( 'wp_head', 'popmake_script_loading_enabled' );

如果你也想阻止查询

remove_action( 'wp_enqueue_scripts', 'popmake_preload_popups', 11 );

希望对您有所帮助。