Dynamic wp_enqueue_scripts?

时间:2012-11-30 作者:rezonans

是否可以动态调用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\'));
它的速度非常快,不需要在项目之间重写。

1 个回复
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\']
            );
        }
    }
}

结束

相关推荐

Custom Post Row Actions

我偶然发现this question 在写这个问题的时候。我有一个问题是关于这个问题的。我发现你用的是get_delete_post_link 筛选为我的操作创建一个新的url(或一个类似的函数——在任何情况下,我都会将该函数与布尔值一起使用)。唯一的问题是,I don\'t know how to capture the event now. 考虑到我在谷歌上找不到很多关于行后操作的例子,我将不胜感激-/public function _wp_filter_get_delete_post_link( $