我注意到,在我网站的源代码中,有五次加载了字体Awesome。加载的版本为3.2.1、4.0.1、4.1.0及更高版本。短代码插件、页面生成器、主题和/或插件,设计用于加载令人敬畏的字体Better Font Awesome 加载它自己的版本。
我使用的主题是这样加载的:
wp_enqueue_style( \'fontawesome\', get_template_directory_uri() . \'/css/fontawesome/font-awesome.min.css\', array(), \'4.1.0\' );
但其以前的版本使用的是:
wp_enqueue_style( \'themename-fontawesome\', get_template_directory_uri() . \'/css/fontawesome/font-awesome.min.css\' );
插件使用各种挂钩和格式:
wp_enqueue_style( \'pluginname-fontawesome\', get_template_directory_uri() . \'/css/fontawesome/font-awesome.min.css\', array(), \'4.0.1\' );
wp_enqueue_style( \'pluginname-fontawesome\', get_template_directory_uri() . \'/css/fontawesome/font-awesome.min.css\' );
wp_enqueue_style( \'fontawesome\', get_template_directory_uri() . \'/css/fontawesome/font-awesome.min.css\', array(), \'3.2.1\' );
wp_enqueue_style( \'font-awesome\', get_template_directory_uri() . \'/css/fontawesome/font-awesome.min.css\' );
我正在开发一个插件,最初我想用这个插件加载Font Awesome:
wp_enqueue_style( \'my-plugin-name-fontawesome\', get_template_directory_uri() . \'/css/fontawesome/font-awesome.min.css\', array(), \'4.1.0\' );
但后来我得出结论,最正确的加载方式是:
wp_enqueue_style( \'fontawesome\', get_template_directory_uri() . \'/css/fontawesome/font-awesome.min.css\', array(), \'4.1.0\' );
有人能确认在我的插件中加载这个的最佳命名标准是什么吗?如果我的版本是最新的,是否有可能阻止其他插件加载它们的版本?
我不想让Font Awesome加载5次(每次30kB),也不应该加载一些旧版本,但我想继续使用我当前使用的主题、快捷代码插件和页面生成器。
最合适的回答,由SO网友:engelen 整理而成
在WordPress插件中,脚本和样式的命名约定一直是一个困难的问题,使用了许多不同的约定,并且经常导致冲突。我会尽量对这件事发表我的看法,并在必要时详细阐述。
让我首先陈述一下我对你问题中的例子的看法:在我看来fontawesome
是一个合适的手柄。
首先,让我区分特定于插件和非特定于插件的脚本和样式。前一组由仅对特定插件或主题有用的脚本和样式组成,而后一组由可跨产品使用的所有脚本和样式组成(在大多数情况下,是WordPress样式表或JavaScript库)。
特定于插件的脚本和样式
在我看来,特定于插件的脚本和样式应该始终以插件前缀作为前缀。例如,对于高级自定义字段,需要包含在所有管理页面上的管理脚本可以注册为
acf-admin
(使用
wp_register_script( \'acf-admin\', .. )
).
非插件特定的脚本和样式这是一个更困难的选择,必须考虑以下几点:
我应该在句柄中添加版本号吗我应该在它前面加上插件前缀吗我应该在它前面加上其父库名称吗在我看来,问题1和问题2的答案是明确的"no".
我应该在句柄中添加版本号吗
几乎所有情况下,同一脚本或样式的多个版本都不打算在单个页面中共存。在脚本或样式的句柄中添加版本号意味着每个产品版本都是完全不同的产品。WordPress也是这样做的:jQuery库的句柄是“jQuery”,而不是“jQuery-[版本]”。
我应该在它前面加上插件前缀吗
插件和主题都应该依赖于脚本或样式的单一版本。在句柄前面加上插件前缀意味着脚本或样式是特定于产品的,而不是特定于产品的。在您的示例中就是这样:每个产品都认为脚本是特定于其产品的,而实际上它更像是一个库。
将版本号或插件前缀添加到脚本或样式的句柄中,可以在很大程度上消除使用唯一句柄注册脚本和样式的情况
我应该在它前面加上其父库名称吗
如果一个库完全依赖于单个库,因而更多地是对库的扩展,则应在其前面加上“父”库名称或前缀。例如,如果您创建了一个名为“内联编辑”的jQuery插件,那么应该使用句柄
jquery-inline-edit
. 在WordPress core中也是这样做的:jQuery的可排序库被称为“jqeury Sortable”,而不仅仅是“Sortable”(与其他不依赖于jQuery的排序库一样)。