2016-01-21 59 views
1

我正在使用Popup Maker插件的Wordpress,我试图阻止它加载在使用children.php文件的儿童主题的特定页面上。删除插件在Wordpress中添加的操作

我已经位于插件目录中的文件弹出式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。

所有帮助表示感谢,谢谢。

回答

1

您正在向init添加一项操作,该操作在plugins_loaded之后,因此无法在操作运行后删除操作。

你可以尝试同样的动作,但你必须从一个插件

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

,但我怀疑添加行为你会后运行之前做到这一点,这可能是不可预测的,如果不是,你可能不得不代码一个MUplugin(谷歌这个)。

+0

是否可以将操作添加到plugins_loaded之前调用的挂钩? (在functions.php中,而不是仅为此任务编写插件?)。谢谢。 – BMM

+1

不,如果来自一个主题,它会在钩子运行后,如果来自一个插件,你可以在没有添加动作的情况下尝试该功能,但是如果你想删除的动作还没有添加,它什么都不会做。没有明显的钩子可以使用。但是可选地,您可以查看要移除的特定功能,这是插件阶段运行的罕见功能,通常会在稍后的加载过程中添加操作。 – David

+0

谢谢。告诉我,我需要从插件做到这一点是关键。 – BMM

0

有一种方法,我成功地做到这一点:

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

@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); 

希望这有助于。

相关问题