这里有一个演示建议:
add_action( \'admin_enqueue_scripts\', function()
{
wp_enqueue_script( \'my-script\', \'/my-script.js\', [\'underscore\', \'backbone\'], \'1.0\' );
wp_add_inline_script( \'my-script\', \'alert("hello world");\' );
// Add our template
if( function_exists( \'wpse_add_inline_tmpl\' ) )
wpse_add_inline_tmpl(
$handle = \'my-script\',
$id = \'my-tmpl\',
$tmpl = \'<div class="section intro">{{{ data.section.intro }}}</div>\'
);
} );
我们定义我们的客户
wpse_add_inline_tmpl()
功能如下:
function wpse_add_inline_tmpl( $handle, $id, $tmpl )
{
// Collect input data
static $data = [];
$data[$handle][$id] = $tmpl;
// Append template for relevant script handle
add_filter(
\'script_loader_tag\',
function( $tag, $hndl, $src ) use ( &$data, $handle, $id )
{
// Nothing to do if no match
if( ! isset( $data[$hndl][$id] ) )
return $tag;
// Script tag replacement aka wp_add_inline_script()
if ( false !== stripos( $data[$hndl][$id], \'</script>\' ) )
$data[$hndl][$id] = trim( preg_replace(
\'#<script[^>]*>(.*)</script>#is\',
\'$1\',
$data[$hndl][$id]
) );
// Append template
$tag .= sprintf(
"<script type=\'text/template\' id=\'%s\'>\\n%s\\n</script>" . PHP_EOL,
esc_attr( $id ),
$data[$hndl][$id]
);
return $tag;
},
10, 3 );
}
这里我们使用
script_loader_tag
筛选以插入模板代码,并使用句柄和id引用它。我们还使用脚本标记
replacement 从核心
wp_add_inline_script()
作用
希望您可以对此进行进一步测试,并根据您的需要进行修改。将其作为类编写可能是更好的方法;-)