我已经为此挣扎了将近一个月,但仍然找不到任何关于如何做到这一点的方法!不是在这里,不是在Quora,不是通过许多不同的高级谷歌搜索查询。。。
这是:
这个parent theme 只有one script file main.min.js
. 它包含它使用的所有脚本和库,包括jQuery
, Select2
, Parsley
和Slick
, 举几个例子。
我该怎么办making my own scripts use one or more of these libraries as their dependencies in the child theme?
最明显的方法是声明父主题main.min.js
将我自己的脚本排入子脚本队列时的依赖项functions.php
并确保在页面上加载依赖项后启动脚本。
我已经这样做了,但它不起作用。我的脚本无法访问其依赖项。
我能想到的唯一替代方法是在子主题中将所有这些库分别排队,就好像父母没有这些库一样。这显然是一件可怕的事情,因为父主题也会在其主js文件中加载这些库!
因此,必须有一种方法通过使用already provided libraries 在父级中。
如果父主题将库单独排队,这将很容易。我想这里的主要问题是,所有脚本和库都包含在一个js文件中。
任何帮助都将不胜感激!
SO网友:Diogo
只是为了提供一个答案,以防人们来到这里,而不浏览评论,这就是我产生这个问题的原因:
开发人员使用的父主题browserify to create the final bundle 对于主题。以及browserify的工作方式,such bundle is completely hidden from the global scope.
因此,即使它有我需要的所有库,我也无法在原始环境之外访问它们。
有人可能会说,在这种情况下,这个主题并不打算用作父主题。这是一个有效的输入,但由于我想/需要继续,这给我留下了3个选项:
1-Create redundance 并通过在我的子主题中分别使用相同的库来进行代码膨胀。(这不是一个真正的选择,是吗?)
2-Add to the parent theme 为了能够在下一个主题发布中保持mods的整洁,需要付出额外的努力,比如Andrei 请在评论中提出建议。(虽然有点冒险,因为我不仅不是一个专业的主题开发人员,还需要特别的关注,这为许多可能的问题留下了空间。谁知道会发生什么)。
3-Copy, modify and recompile parent theme source files 然后通过子主题覆盖最后一个包,方法是保留与原始包相同的文件名/句柄,因为子主题functions.php
将首先加载。
后者似乎是most practical and cleanest option, 所以我会坚持下去,看看会怎么样。
幸亏Andrei 再次感谢他在整个过程中的投入。