Wordpress Meta Slider Pro和NextGEN Gallery

时间:2014-07-18 03:14:24

标签: wordpress nextgen-gallery

我已经将MetaSlider Pro和Next GEN Gallery一起安装用于wordpress。但是存在冲突,Next GEN Gallery根本无法加载,只有blury图标显示。当我关闭Meta Slider pro Next GEN Gallery工作时。任何人都知道如何调试这个冲突。

编辑:我发现冲突只发生在使用下一代图库的Post Feed幻灯片(在MetaSlider Pro中)时,所有其他滑块似乎与Next GEN图库一起正常工作。所以它必须是那个帖子滑块和下一个GEN之间存在冲突的东西。所有下一个GEN节目都是。

<img class="ngg_displayed_gallery mceItem" width="640" height="363" alt="" src="http://infinite.somewhere.net/index.php/nextgen-attach_to_post/preview/id--380">

编辑2:21/07/2014

在做了一些调查之后,我发现NextGEN图库中的文件module.attach_to_post.php有一个名为substitute_placeholder_imgs的函数,它应该在处理内容时触发,但它似乎被Meta Slider Pro的帖子内容覆盖了。即以下行

add_filter('the_content', array(&$this, 'substitute_placeholder_imgs'), PHP_INT_MAX, 1);

实际上并没有触发主要内容,但确实触发并替换了Meta Slider内容帖子。以下是页面内容:

<div class="content-pad">
<div class="hideifmobile">[metaslider id=105]</div>
<div class="hideifweb">[metaslider id=276]</div>
</div>
<img class="ngg_displayed_gallery mceItem" src="http://infinite.cybernamixqld.net/index.php/nextgen-attach_to_post/preview/id--380" alt="" width="640" height="363" />

更换后会发生以下情况。

<div class="content-pad">
<div class="hideifmobile">SUCCESSFULLY REPLACED WITH SLIDER</div>
<div class="hideifweb">SUCCESSFULLY REPLACED WITH SLIDER</div>
</div>
<img class="ngg_displayed_gallery mceItem" src="http://infinite.cybernamixqld.net/index.php/nextgen-attach_to_post/preview/id--380" alt="" width="640" height="363" />

下一代图库图像不会被图库替换。

我还发现正则表达式似乎没有正常工作,并且必须更改它以处理同一页面上的多个库。这种变化可能是一个错误(就我而言)所以如果每件事情都适合你,就不要这样做。

//old preg_match_all("#<img.*http(s)?://({$preview_url}|{$alt_preview_url})/id--(\\d+).*\\/>#mi", $content, $matches, PREG_SET_ORDER)

        if (preg_match_all("#<img[^>]*http(s)?://({$preview_url}|{$alt_preview_url})/id--(\\d+)[^>]*>#mi", $content, $matches, PREG_SET_ORDER)) { 

我还没有解决这个问题。仍然在寻找为什么主页面内容没有被'the_content'调用解析,但是滑块中的所有帖子都被解析了。任何想法任何人?????

1 个答案:

答案 0 :(得分:0)

您好我找到了暂时解决此问题的方法。这不是最好的方式,但确实有效。

以下列方式更改主题中的页面/帖子模板:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php  ob_start(); the_content(); $data = ob_get_clean(); echo fixsliderbug($data);  ?>
<?php endwhile; endif; ?>

然后在主题中添加以下功能。

function fixsliderbug($data){
    if (preg_match_all("#<img[^>]*http(s)?://([^>]*)/id--(\\d+)[^>]*>#mi", $data, $matches, PREG_SET_ORDER)) { 

        foreach ($matches as $match) {
                $out = apply_filters('the_content',$match[0]);
                $data = str_replace($match[0], $out, $data);
        }

   }


    return  $data;
}

这样做的目的是找到在解析内容时遗漏的任何Next GEN滑块,并在运行时解析它们。我相信有更好的解决方案,但如果您需要一种快速而肮脏的方式来运行您的网站,请尝试上述方法。