停止脚本的 WP-选项:此处 Google-Maps API:wp_dequeue 或 wp_deregister 脚本?或者...甚至删除?

tha*_*nen 3 php wordpress

如何使用 wp_dequeue 来阻止脚本在 WordPress 中加载: ...或者这里还有更多选项,我们可以使用。

\n

背景:

\n

首先:我们正在谈论这个网站:https://www.job-starter.com \n这个网站运行:wordpress 6.3.1\n插件:wp-job-manager\n主题:jobify-theme by astoundify.com -请参阅https://astoundify.com/products/jobify/

\n

注意:此主题使用 Google 地图 - 我不想在我的网站上运行此主题 - 因为我不想因 API 调用而遇到法律问题:

\n

(主题的)开发人员说 - 我网站上的 Google_Map_API 如下:

\n
js?v=3&libraries=geometry%2Cplaces&language=en&ver=6.3. \ncommon.js \nutil.js\n
Run Code Online (Sandbox Code Playgroud)\n

主题作者正在加载 Google Maps API,但网站上并未使用它,因此我想在子主题的functions.php 中将其出列。他们不提供在主题设置中简单地禁用它的选项。\n问题:有人介意帮我提供一些关于我们这里的选项的想法吗:

\n
    \n
  • A。我们可以在家长主题中将其注释掉或者
  • \n
  • b. 在子主题中将其出列?以及有什么选择
  • \n
  • C。注销它,甚至更多......只是为了
  • \n
  • d. 去掉它
  • \n
\n

所以这里有很多选项: wp_dequeue 代码

\n

问题:

\n

在父主题中将其注释掉或在子主题中将其出列在技术上不是更有效吗?我知道修改父主题代码的固有问题。\n关于选项...

\n

我们可以与

\n
(\'bazien-google-maps\', \'https://maps.googleapis.com/maps/api/js?kewp_enqueue_script(\'bazien-google-maps\', \'https://maps.googleapis.com/maps/api/js?ke\n
Run Code Online (Sandbox Code Playgroud)\n

但是等等: 这不是最好的 WordPress 方式吗,我们需要在子主题中取消注册它。为此,请使用以下命令:

\n
wp_deregister_script( \'bazien-google-maps\' );\n \n
Run Code Online (Sandbox Code Playgroud)\n

结论:在父主题中对其进行注释会更有效,因为这样我们就不会加载脚本来“卸载”它。但是,有一天可能会出现更新,因此在子主题中禁用它会更安全。

\n

我不确定以上想法和思考是否正确。你怎么说...?

\n

顺便提一句:

\n
\n

停止脚本的选项:此处 Google-Maps API:wp_dequeue 或 wp 取消注册脚本

\n
\n

正确的!

\n

顺便说一句:如果我们选择选项 2

\n

b. 在子主题中将其出列

\n

也就是说 - 我网站上的 Google_Map_API 如下

\n
js?v=3&libraries=geometry%2Cplaces&language=en&ver=6.3.\ncommon.js \nutil.js\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x8b

\n

因此functions.php中的代码可能像这样

\n

\xe2\x80\x8b

\n
function dequeue_google_maps_scripts() {\nwp_dequeue_script(\'common.js\');\nwp_dequeue_script(\'util.js\');\nwp_dequeue_script(\'js?v=3&libraries=geometry%2Cplaces&language=en&ver=6.3.2\');\n\n} add\\_action(\'wp\\_enqueue\\_scripts\', \'dequeue\\_google\\_maps\\_scripts\', 100);\n
Run Code Online (Sandbox Code Playgroud)\n

但这不起作用;我的页面上仍然有 Google-Map-API 调用。\n您对这个解决方案有何看法..!?

\n

更新:

\n

已经应用了代码 - 并尝试使用显示详细信息的工具加载网站 - 但是是的:可能我必须删除cookie - 首先..看看结果

\n

在此输入图像描述

\n

Ruv*_*vee 5

由于您正在使用的主题是“高级主题”,我不能购买它只是为了调试它,所以我无法完全重现您的问题,但经过几年的使用这些场景,并有为了自己做出这些决定并亲眼看到结果,如果我是你,我会选择选项“b”!

选项:

A。可行但不推荐(由于您在问题中提到的所有原因)
b。这将是我最好的选择!
C。如果您选择“b”,则可行但不必要
d。也可行,但如果您选择“b”则不必要


“但这行不通”

您收到任何错误/警告吗?您查看过您的日志文件吗?

笔记:

为了wp_dequeue_script正确使用:

  • 确保将脚本“句柄”传递给wp_dequeue_script函数,否则它将无法工作。“句柄可能与脚本名称不同,也可能不同。您需要查看源代码以检查“handle”是否与脚本名称相同。找到“句柄”的最简单方法是查看浏览器上的页面源代码。(完全加载后,右键单击页面上的任意位置,然后单击“查看页面源代码”。在页面源代码中搜索您的脚本并获取“句柄。这是这些脚本的第一部分)
  • 由于我无权访问您的“高级主题”的源代码,并且无法读取源代码来查看这些脚本排队的优先级,因此,我建议给您的函数一个低优先级(高数字) )以确保它最后运行(是的,我见过开发人员根据其代码的结构使用高于 100 的优先级)。
  • 此外,您不需要在function.php子主题文件中使用反斜杠转义动作挂钩!
  • 我还发现wp_dequeue_script由于“浏览器缓存”,第一次运行它时无法工作!因此,如果您正确执行了所有操作并运行它并发现它不起作用,那么请确保通过“硬重新加载”页面或使用浏览器来清除浏览器缓存developer tools > network tab

例如:

add_action( "wp_enqueue_scripts", "your_theme_dequeue_function", 999 );  

function your_theme_dequeue_function() 
{
    wp_dequeue_script( "REPLACE_THIS_WITH_HANDLE_OF_SCRIPT_1" );
    wp_dequeue_script( "REPLACE_THIS_WITH_HANDLE_OF_SCRIPT_2" );
    wp_dequeue_script( "REPLACE_THIS_WITH_HANDLE_OF_SCRIPT_3" );
}
Run Code Online (Sandbox Code Playgroud)

由于您的主题是“高级主题”,我无法在我这边重现您的问题,所以这就是我此时所能想到的。如果你能让它工作,请告诉我!


更新

您发给我的主题源代码需要我登录第三方网站才能激活主题。我在该第三方网站上没有帐户,也没有时间完成该过程!

但是,我快速浏览了源代码,发现了几个负责将“google 地图”api 排队的脚本“句柄” 。functions.php这是我建议在您的子主题文件中使用的代码。

add_action("wp_enqueue_scripts", "your_theme_dequeue_function", 999);

function your_theme_dequeue_function()
{
  wp_dequeue_script("gjm-map");
  wp_dequeue_script("gjm-google-maps");
  wp_dequeue_script("google-maps");
  wp_dequeue_script("jobify-app-map");
  wp_dequeue_script("gjm-info-bubble");
  wp_dequeue_script("gjm-marker-clusterer");
  wp_dequeue_script("gjm-marker-spiderfier");
}
Run Code Online (Sandbox Code Playgroud)

从理论上讲,它应该可以工作,并使页面上的所有这些脚本出列,但由于此特定主题的激活过程,我无法对其进行测试。

  • 您好 - 亲爱的 Ruvee - 非常感谢您的回复。我非常感谢你在这里提供帮助。目前我没有在这里应用你的补丁。但我会在下午做这件事。当然可以!顺便说一句:如果我有地址 - 我愿意向您发送主题。这里没问题。期待收到您的来信 - 顺便说一句:ruvee - 我也非常感谢成为这个开源社区的一员,这里的人们慷慨地愿意为他人提供他们的时间和专业知识:这太棒了。我无法形容你让我有多高兴;) (4认同)
  • b. 这将是我最好的选择!- 好吧 Ruvee - 我同意你的观点。b确实是一个不错的选择。你的回答非常好——而且令人鼓舞!谢谢 (3认同)
  • 这些想法非常有趣 (2认同)