如何为外部(包含).js文件创建模板路径

时间:2012-11-15 作者:strange man

从我的头文件,我可以轻松地创建任何模板路径。js文件:

 <?php $templateDirPath = get_bloginfo( \'template_directory\' ) . \'/\';    ?>
<script type="text/javascript" src="<?php echo $templateDirPath; ?>js/scripts.js"></script>
但在“脚本”中。js的文件有一些include。js文件(同一目录)如下:

包括(\'js/mathUtils.js\');

包括(\'js/superfish.js\');

包括(\'js/switcher.js\');

包括(\'js/jquery.mousewhe

我只是想知道是否有任何方法可以为包含的模板创建路径。脚本中的js文件。js的文件?我是wordpress的新手。

找到了以下代码的想法,但dnt不知道如何实现:

<script type="text/javascript">
var templateUrl = \'<?= get_bloginfo( \'template_directory\' ) . \'/\'; ?>\';
</script>

3 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

使用wp_enqueue_script(), 通过适当的动作挂钩回调钩住。

wp_enqueue_script(
    // Script handle
    \'someScript\',
    // URL
    get_template_directory_uri() . \'/js/someScript.js\',
    // Dependencies
    array( \'jquery\' ),
    // Version
    \'2.4\',
    // Output in footer?
    false
);
例如:

function wpse72720_enqueue_scripts() {
    if ( ! is_admin() ) {

        wp_enqueue_script(
            \'mathUtils\',
            get_template_directory_uri() . \'/js/mathUtils.js\',
            array(),
            \'\',
            false
        );

        wp_enqueue_script(
            \'superfish\',
            get_template_directory_uri() . \'/js/superfish.js\',
            array( \'jquery\' ),
            \'\',
            false
        );

        wp_enqueue_script(
            \'switcher\',
            get_template_directory_uri() . \'/js/switcher.js\',
            array(),
            \'\',
            false
        );

        wp_enqueue_script(
            \'query.mousewhel\',
            get_template_directory_uri() . \'/js/query.mousewhel.js\',
            array( \'jquery\' ),
            \'\',
            false
        );
    }
}
add_action( \'wp_enqueue_scripts\', \'wpse72720_enqueue_scripts\' );

SO网友:Steve

您需要研究一下在WordPress中让JS排队的正确方法。您的方法完全超出了定义的方法。

看看WordPress codex 对于wp\\u enqueue\\u脚本调用。

SO网友:s_ha_dum

您找到的解决方案几乎是正确的,但ASP<?= 可能不太可靠,尤其是pre-PHP.5.4.0.

function add_templateUrl_var() { ?>
    <script type="text/javascript">
        var templateUrl = \'<?php bloginfo( \'template_directory\' ); ?> /\';
    </script><?php
}
add_action(\'wp_footer\',\'add_templateUrl_var\');
假设主题使用wp_footer 作用你可以把它放在你的functions.php 或者在插件中。

你可以使用wp_enqueue_script 但据我所知,这要求您加载一个文件,这太过分了,而不仅仅是一个字符串。如果有人能演示如何用wp_enqueue_script 并避免加载整个文件的开销,我希望在这方面被证明是错误的。

还有其他方法可以做到这一点,比如wp_localize_script ()http://pippinsplugins.com/use-wp_localize_script-it-is-awesome/ ), 但这需要排队,我认为这太过分了。

Edit: 如果您已经将一个脚本或任何脚本排入队列,您可以利用它来打印变量。

function enqueue_my_scripts() {
    wp_enqueue_script(\'jquery\');
    wp_localize_script( \'jquery\' , \'my_js_vars\' , array( \'templatepath\' => get_bloginfo( \'template_directory\' ) ) );
}
add_action(\'wp_enqueue_script\',\'enqueue_my_scripts\');

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。