是否可以动态调用wp\\u enqueue\\u脚本?
例如,我想在函数中使用。php我自己的函数
addThemeJS( true, \'modernizr\', THEME_JS_DIR . "/plugins/modernizr.custom.js", array(), false, false );
addThemeJS( true, \'somthing-else\', THEME_JS_DIR . "/plugins/somthing-else.js", array(), false, false );
在我的核心功能文件中:
function addThemeJS( $enqueueThemeJS, $handle, $src, $deps, $ver, $in_footer ) {
function addJS( $handle, $src, $deps, $ver, $in_footer ) {
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
}
add_action(\'wp_enqueue_scripts\', \'addJS\');
}
。。。但是我不能在这里传递我需要的变量($handle,$src)
请给我一个解决这个问题的方法
我只是想用WordPress做一个小框架来创建一些基本的东西。例如,要创建菜单,我使用此函数
/ / Create menu:
function addThemeMenu ($ showThemeMenu, $ location, $ description) {
if ($ showThemeMenu):
register_nav_menu ($ location, $ description);
endif;
}
然后打电话
addThemeMenu (true, \'main\', __ (\'Main Navigation\', \'Theme\'));
它的速度非常快,不需要在项目之间重写。
SO网友:chrisguitarguy
你可以使用anonymous functions 在PHP 5.3+中执行此操作。
<?php
function addThemeJS($enqueueThemeJS, $handle, $src, $deps, $ver, $in_footer)
{
add_action(\'wp_enqueue_scripts\', function() use ($handle, $src, $deps, $ver, $in_footer) {
wp_enqueue_script($handle, $src, $deps, $ver, $in_footer);
});
}
如果您使用的是一个个人项目,您知道服务器有5.3以上版本,如果有点奇怪,您也可以。如果你想在WP中发布一些东西。org repo,您可能想找到另一种方法。
您最好创建某种包装器对象并使用它。
<?php
// add the action
WPSE74479_Enqueue::init();
// register scripts...
WPSE74479_Enqueue::register(\'modernizr\', THEME_JS_DIR . "/plugins/modernizr.custom.js", array(), false, false);
class WPSE74479_Enqueue
{
private static $ins = null;
private $scripts = array();
public static function instance()
{
is_null(self::$ins) && self::$ins = new self;
return self::$ins;
}
public static function init()
{
add_action(\'wp_enqueue_scripts\', array(self::instance(), \'enqueue\'));
}
public static function register($hndl, $src, $deps=array(), $ver=null, $footer=false)
{
self::instance()->scripts[$hndl] = array(
\'src\' => $src,
\'deps\' => $deps,
\'ver\' => $ver,
\'footer\' => $footer,
);
}
public function enqueue()
{
foreach($this->scripts as $hdnl => $script)
{
wp_enqueue_script(
$hndl,
$script[\'src\'],
$script[\'deps\'],
$script[\'ver\'],
$script[\'footer\']
);
}
}
}