删除由 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 );
希望对您有所帮助。
我正在使用 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 );
希望对您有所帮助。