wp_add_inline脚本(一串 $句柄,一串 $数据,一串 $位置 = “之后” ):布尔

向注册脚本添加额外代码。

描述

只有当脚本已经在队列中时,才会添加代码。
接受字符串$数据包含代码。如果将两个或多个代码块添加到同一脚本$句柄,它们将按添加顺序打印,即后一个添加的代码可以重新声明前一个。

另请参见

参数

$句柄一串必修的
要将内联脚本添加到的脚本的名称。
$数据一串必修的
包含要添加的JavaScript的字符串。
$位置一串可选择的
是在句柄之前还是之后添加内联脚本。违约“之后”.

违约:“之后”

返回

布尔成功时正确,失败时错误。

来源

函数wp_add_inline_script($handle,$data,$position='after'){_wp_scripts_maybe_doing_it_wrong(__FUNCTION__,$handle);if(false!==stripos($data,'</script>')){_做错了(__功能__,冲刺(/*转换器:1:<script>,2:wp_add_inline_script()*/__('不要将%1$s标记传递给%2$s。'),'<代码>&lt;脚本&gt</代码>','<code>wp_add_inline_script()</code>'),'4.5.0');$data=修剪(preg_replace('#<script[^>]*>(.*)</script>#is','$1',$data));}返回wp_scripts()->add_inline_script($handle,$data,$position);}

变更日志

版本描述
4.5.0介绍。

用户贡献的笔记

  1. 跳到注释7内容

    显然我们现在应该使用wp_add_inline_script(wp_add_inline_script)而不是wp_localize_script公开脚本需要使用的全局对象。

    因此,虽然以前您可以(现在仍然可以)这样做:

    wp_enqueue_script('wpdocs-my-script','https://url-to/my-script.js' );wp_localize_script('wpdocs-my-script','MYSCRIPT',数组(“ajaxUrl”=>admin_url(“admin-ajax.php”),'otherParam'=>'some value',) );

    现在似乎建议这样做(我个人认为这很难看):

    wp_enque_script('wpdocs我的脚本','https://url-to/my-script.js' );wp_add_inline_script('wpdocs-my-script','const MYSCRIPT='.json_encode(数组(“ajaxUrl”=>admin_url(“admin-ajax.php”),'otherParam'=>'some value',)),“之前”);

    请注意,您需要添加“之前”作为第三个参数wp_add_inline_script(wp_add_inline_script)功能。

    现在,在JS脚本中,您可以访问以下PHP参数,如下所示:

    控制台.log(MYSCRIPT.ajaxUrl);//输出:“https://your-site/wp-admin/admin-ajax.php&quot;控制台.log(MYSCRIPT.otherParam);//输出:“一些值”
  2. 跳到备注8内容

    可以使用以下代码轻松地将Typekit的JavaScript添加到主题中:

    函数mytheme_enqueue_typekit(){wp_enque_script('主题类型工具包','https://use.typekit.net/.js',array(),'1.0');wp_add_inline_script('mytheme-typekit','尝试{typekit.load({async:true});}捕获(e){}');}add_action('wp_enqueue_scripts','mytheme_enqueue_typekit');

    结果是:

    <script type=“text/javascript”src=“https://use.typekit.net/.js?ver=1.0“></script&gt;尝试{Typekit.load({async:true});}捕获(e){}

    发件人https://make.wordpress.org/core/2016/03/08/enhanced-script-loader-in-wordpress-4-5/

  3. 跳到注释9内容

    添加CSS样式没有依赖性

    wp_register_style('myprefix-dummy-css',false);wp_enque_style('myprefix dummy css');wp_add_inline_style('myprefix-dummy-css',“body*{box-sizing:inherit;}”);

    添加JavaScript代码没有依赖性

    wp_register_script('myprefix-dummy-js-header','',);wp_enqueue_script('myprefix-dummy-js-header');wp_add_inline_script('myprefix-dummy-js-header',“console.log('加载到标题中');”);

    添加JavaScript代码具有jQuery(jQuery)附属国

    wp_register_script('myprefix-dummy-js-footer','',数组(“jquery”),'',true);wp_enqueue_script('myprefix-dummy-js-footer');wp_add_inline_script('myprefix dummy js footer',“console.log('loaded in footer');”);
  4. 跳到注释10内容

    注:使用新的区块主题,如“二十二”,wp_localize_script/wp_add_inline_script(wp_add_inline_script)如果调用得太晚(例如在短代码呈现回调函数中),将不再工作。要实现这一点,您需要使用与wp_footer操作挂钩的匿名函数调用,

    $data=数组();//要传递给前端脚本的数据对象。$localise=json_encode($data);add_action('wp_footer',function()use($localise){printf('<script type=“text/javascript”>var myData=%s</script>',$localise);});
  5. 跳到备注11内容

    当你想确保你的匿名函数使用一个使用javascript库实例化的对象时,这个函数很方便,因为javascript库可能会与其他插件或WordPress核心本身加载的其他版本发生冲突。例如,如果需要使用不同版本的jQuery,可以执行以下操作,

    wp_register_script('jquery3.2.1','https://code.jquery.com/jquery-3.2.1.min.js' );wp_add_inline_script('jquery3.2.1','var jquery3_2_1=$.noConflict(true);');wp_enqueue_script('plugin-javascript',plugins_url('js.js',__FILE__),数组('jquery3.2.1'));

    这将在浏览器加载jQuery库v3.2.1后立即实例化一个新的jQuery对象`jquery3_2_1`,确保它具有正确的版本引用,然后可以将其作为属性传递给`js.js`脚本,

    (函数($){//$现在使用jquery的v3.2.1。//警报jQuery版本。警报($.fn.jquery);//此处应显示插件/主题代码。}(jQuery3_2_1));
  6. 跳到注释12内容

    用于添加内联脚本

    函数theme_prefix_enqueue_script(){wp_enqueue_script('main-js','/main.js',array(),'1.0');wp_add_inline_script('main-js','警报(“hello world”);');}add_action(“wp_enqueue_scripts”,“theme_prefix”);

    对于jQuery-dependent脚本,请使用以下命令:

    函数theme_prefix_enqueue_script(){if(!wp_script_is('jquery','done')){wp_enqueue_script('jquery');}wp_add_inline_script('jquery-migate','jquery(document).ready(function(){});');}add_action('wp_enque_scripts','theme_prefix_enquee_script');

你必须登录在能够发表注释或反馈之前。