如何在不阻止插件更新的情况下调整插件

时间:2017-02-10 作者:Josh Rodgers

我正在使用Simplelightbox插件(Plugin URLHomepage URL) 在我的网站上:http://joshrodg.com/condos/pictures/

在那一页上,我有一个使用灯箱的图片库,然后在图片库的正下方,有一个名为“带5个缩略图的图片”的部分,这个部分也使用灯箱。

图片库中有14幅图像,图片部分(图片库下方)有5幅图像。

开箱即用,当你点击一张图片时,Lightbox会打开,但总数会是19张中的1张,因为该页面上总共有19张使用Lightbox插件的图片。

我想要它做的是将这些部分分开,或者有多个灯箱。因此,点击画廊图片时会显示14个图片中的1个,或者点击图片部分的缩略图时会显示5个图片中的1个。

我可以通过修改以下文件来修复此问题(因为没有允许我配置多个灯箱的插件选项):http://joshrodg.com/condos/wp-content/plugins/simplelightbox/resources/js/setup.simplelightbox.js

原始代码(从第35行开始):

if($(\'a.simplelightbox \').length ) {
    var simplelightbox = $("a.simplelightbox").simpleLightbox(options);
}
修改后的代码(从第35行开始):

if($(\'a.simplelightbox \').length ) {
    var lightbox1 = $(\'.gallery a\').simpleLightbox();
    var lightbox2 = $(\'#pict a\').simpleLightbox();
}
这解决了问题,但下次插件更新时,这些设置可能会被删除。

如果插件曾经更新过,有没有人可以共享我可以在模板中使用的函数或东西来避免可能出现的问题?

谢谢,乔希

4 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

创建一个插件,将您不需要的javascript排出队列,并将已编辑的javascript排入队列。

<?php
/**
 * Plugin Name: Stackexchange Sample
 * Author: Nathan Johnson
 * Licence: GPL2+
 * Licence URI: https://www.gnu.org/licenses/gpl-2.0.en.html
 * Domain Path: /languages
 * Text Domain: stackexchange-sample
 */

//* Don\'t access this file directly
defined( \'ABSPATH\' ) or die();

add_action( \'wp_enqueue_scripts\', \'wpse_106269_enqueue_scripts\', 15 );
function wpse_106269_enqueue_scripts() {
  $slb = SimpleLightbox::get_instance();
  wp_dequeue_script( \'simplelightbox-call\');
  wp_deregister_script( \'simplelightbox-call\' );

  wp_register_script( \'simplelightbox-edit\',
    plugins_url( \'/simplelightbox-edit.js\', __FILE__ ),
    [ \'jquery\', \'simplelightbox\' ], false, true);
  wp_localize_script( \'simplelightbox-edit\', \'php_vars\', $slb->options );
  wp_enqueue_script( \'simplelightbox-edit\' );
}
编辑:我刚刚在一个新的安装上测试了上述插件,它将“simplelightbox调用”javascript退出队列,并将编辑的脚本排入队列。

SO网友:rhinos

如果手动修改插件,保持更改的唯一方法是从不更新插件。有可能通过函数文件创建wordpress挂钩,但这取决于插件,它可能不支持这一点。

无论何时手动更改插件,都有两种选择:

1) 永远不要再更新插件,或者(2)列出更改列表(可能在计算机上保存的文本文件中),以便如果要更新插件,可以手动进入并重新进行更改。

SO网友:Kenneth Odle

出于这里列出的所有原因,您确实希望避免调整插件。如果您更新,您的更改将消失。如果你不更新,你就有可能让你的网站面临安全漏洞。

这里的问题在于你的插件。“简单”是指每页显示一个灯箱。您需要找到一个插件,它允许您在一个页面上显示多个lightbox。

SO网友:rudtek

我想你的意思是你想停止通知?

最简单、最简单的方法是更改您不想更新的插件版本。例如,如果我不想更新我的awesome插件,我会打开它的定义文件,如下所示:

/*
    Plugin Name: simple light
    Plugin URI: http://www.example.com/
    Version: 1.1.1

*/
此处的版本将1.1.1更改为9999,如下所示:

/*
    Plugin Name: simple light
    Plugin URI: http://www.example.com/
    Version: 9999

*/

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请