Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery有条件地打开wordpress中的Popup Maker Popup_Jquery_Wordpress_Popup - Fatal编程技术网

使用jQuery有条件地打开wordpress中的Popup Maker Popup

使用jQuery有条件地打开wordpress中的Popup Maker Popup,jquery,wordpress,popup,Jquery,Wordpress,Popup,我试图有条件地加载Wordpress中的弹出窗口。弹出窗口在插件中配置,CSS类为popmake-2503 我在我的主题的functions.php中创建了一个函数,它有条件地加载脚本: // open popup function open_popup() { if( is_user_logged_in() && is_page('checkout') ) { wp_enqueue_script( 'open-popup', ge

我试图有条件地加载Wordpress中的弹出窗口。弹出窗口在插件中配置,CSS类为popmake-2503

我在我的主题的functions.php中创建了一个函数,它有条件地加载脚本:

// open popup
function open_popup() {
if( is_user_logged_in() && is_page('checkout') )
    {
    wp_enqueue_script(
        'open-popup',
        get_stylesheet_directory_uri() . '/open-popup.js',
array( 'jquery' )
            );
        }
    }
add_action( 'wp_footer', 'open_popup' );
在open-popup.js文件中,我有以下内容:

jQuery(document).ready(function($) {
    alert ('running');
    $('#popmake-2503').popmake('open');
});
我已经阅读了,但是我仍然无法启动弹出窗口,并且控制台中没有显示错误。基本javascript警报可以正常工作

多谢各位

编辑1:另一种方法是工作,即

$('#popmake-2503').popmake('close');

按照WP admin中的popup Maker配置中的定义自动加载后,可有效关闭弹出窗口。

您尝试使用id选择器popmake-2503获取弹出窗口,但我发现您的问题是,它具有类popmake-2503。因此,尝试改变这一行:

jQuery(document).ready(function($) {
   alert ('running');
   $('.popmake-2503').popmake('open'); //class selector
});

您可以避免使用jQuery。这允许在某些条件不正确时禁用插件

add_action('wp', 'disablePopup');

function disablePopup () {
    if (/*Some condition is not true*/) return remove_action( 'wp_enqueue_scripts', 'popmake_load_site_scripts');
}

您的解决方案是正确的,但当前Popup Maker推迟了js加载,因此您的代码在加载.popmake'open'函数和初始化弹出窗口之前运行

我们很快就会解决这个问题,但请尝试在打开它之前添加一个短超时:

jQuery(document).ready(function($) {
    setTimeout(function() {
        $('#popmake-2503').popmake('open');
    }, 2000);
});
或者更好的是像这样参与事件。这样,一旦弹出窗口实际准备就绪,它就会打开。在使用事件绑定时,这也可以安全地加载到头部

jQuery(document).on('pumInit', '#popmake-2503', function () {
    PUM.open(2503); // Newer method than $('#popmake-2503').popmake('open'); and uses internal selector caching.
});
最后,如果您想要一个可重用的解决方案,您可以在我们的弹出条件编辑器中使用它。您只需要一个条件就可以同时进行真假检查。以下文档包括多个您可以使用的完整示例:


PS我是PM的首席开发者,所以这是事实上最好的答案

谢谢。是的,有些事情改变了。弹出窗口仍然没有显示,但我从控制台得到以下错误:Uncaught TypeError:无法读取来自popup-maker-site.min.js插件文件的undefined属性“meta”…正如他们的API一样,我相信我真的需要通过jQuery触发弹出窗口。当然,如果你有元素的id,更好的方法是使用它进行选择。重要的是正确选择项目。但因为在您的问题中,您并没有提到所选元素有一个id,而是show class,所以我决定您并没有正确地选择所需的元素。您可以尝试调试代码,以确保通过放置console.log$'popmake-2503','test';正确选择了元素;。如果你能把你的代码放在某个地方,我可以帮你更多:谢谢。我从控制台获得了以下日志:[divpopmake-2503.popmake.theme-2382.responsive.size-medium,上下文:document,选择器:popmake-2503]0:divpopmake-2503.popmake.theme-2382.active.size-medium.fixed.responsive.custom-position上下文:文档长度:1选择器:popmake-2503 proto:m[0],因此选择器正常。但我设法用另一种方法解决了这个问题,至少目前是这样:弹出窗口会自动打开,但如果用户登录,则会自动关闭,用户不会注意到。意思是$'popmake-2503'。popmake'open';打开弹出窗口不起作用,但是$'popmake-2503'。popmake'close';为关闭它而工作。根本不推荐。大多数用户不仅仅有一个弹出窗口,这将有效地一次禁用所有弹出窗口。OP似乎想打开一个特定的弹出窗口。对我来说,延迟是有效的,而监听器则不然。我没有足够的技巧来解释原因。出于某种奇怪的原因,当使用延迟方法打开后,弹出窗口会自动关闭。顺便说一句,我们正在使用最新下载的popup Maker,我很喜欢它。对于上面的事件侦听器方法,当我们传递第二个参数“popmake-2503”时,我没有得到事件。如果我们在没有显式ID的情况下以pumInit事件为目标,它就会工作。