如果将脚本注册到wp_register_script()
没有必要将所有选项都传入wp_enqueue_script()
再一次
您可以在中心位置注册脚本,并在不同的文件中使用排队。
functions.php
wp_register_script( \'theme_script\', \'path/to/script.js\', array( [dependencies] ), \'1.0\', true );
[...]
if ( $condition )
require_once \'file1.php\';
else
require_once \'file2.php\';
file1.php
wp_enqueue_script( \'theme_script\' );
file2.php
wp_enqueue_script( \'theme_script\' );
将源添加到
wp_enqueue_script()
提前注册会带来一些麻烦。让我们看看核心文件(
wp-includes/functions.wp-scripts.php )
if ( $src ) {
$_handle = explode(\'?\', $handle);
$wp_scripts->add( $_handle[0], $src, $deps, $ver );
这对你的主题意味着什么?
首先,使用句柄“jquery”和源“http://ajax.googleapis.com/ajax...”。然后使用句柄“jquery”和源“http://ajax.googleapis.com/ajax...”。
查看核心代码:if ( $src )
表示如果有传递的源wp_enqueue_script()
, 应用源的第一部分(在?)将脚本注册到this 句柄和此源。
因此,您注册了一个带有句柄“jquery”和源“http://ajax.googleapis.com/ajax...“带wp_register_script()
. 您使用句柄“http://ajax.googleapis.com/ajax...“和源”http://ajax.googleapis.com/ajax...”。稍后,您尝试将依赖于“jquery”的脚本(注释回复)排入队列,但jquery脚本仅已注册,未排入队列。
这会导致意外行为。
依赖项应作为数组传递(array( \'jquery\' )
) (参见法典here 和here). 在开发过程中,打开WP\\u DEBUG并检查文件是否存在。实际上,没有必要取消注册核心脚本并重新注册同一文件。如果需要未统一的版本(例如用于调试),请使用SCRIPT_DEBUG
constant.
您的脚本应如下所示:
function init_scripts() {
wp_deregister_script( \'jquery\' );
// Register Scripts
if ( ! defined( \'SCRIPT_DEBUG\' ) && ( defined( \'WP_DEBUG\' ) && true == WP_DEBUG ) )
define( \'SCRIPT_DEBUG\', true );
$modernizr_file = get_bloginfo(\'template_url\') . \'/js/modernizr-1.5.min.js\';
if ( defined( \'WP_DEBUG\' ) && true == WP_DEBUG && ! file_exists( $modernizr_file ) )
throw new Exception( \'File not found for JS modernizr:\' . $modernizr_file );
wp_register_script( \'modernizr\', $modernizr_file, \'\', 1.5, false );
wp_register_script( \'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js\', \'\', \'1.4.2\', true );
// Enqueue scripts, dependencies first
wp_enqueue_script( \'jquery\' );
wp_enqueue_script( \'modernizr\' );
if ( get_option( \'thread_comments\' ) )
wp_enqueue_script( \'comment-reply\' );
}