编辑:谢谢你们的回复,伙计们。这正是我想要的。你们每个人都提出了一些好的观点。我想我会坚持使用常量。
这确实是一个最佳实践/性能问题。
我主要关注以下功能:
get_template_directory_uri()
get_template_directory()
get_stylesheet_directory_uri()
get_stylesheet_directory()
我的印象是,在某些情况下反复调用函数是不好的做法。因此,这将被视为不良做法:
// Pattern 1
wp_enqueue_script( \'test-1\', get_template_directory_uri() . \'/js/test-1.js\', \'jquery\', \'20120206\', true );
wp_enqueue_script( \'test-2\', get_template_directory_uri() . \'/js/test-2.js\', \'jquery\', \'20120206\', true );
wp_enqueue_script( \'test-3\', get_template_directory_uri() . \'/js/test-3.js\', \'jquery\', \'20120206\', true );
这会更好:
// Pattern 2
$template_directory_uri = get_template_directory_uri();
wp_enqueue_script( \'test-1\', $template_directory_uri . \'/js/test-1.js\', \'jquery\', \'20120206\', true );
wp_enqueue_script( \'test-2\', $template_directory_uri . \'/js/test-2.js\', \'jquery\', \'20120206\', true );
wp_enqueue_script( \'test-3\', $template_directory_uri . \'/js/test-3.js\', \'jquery\', \'20120206\', true );
我见过一些主题初始化常量:
// Pattern 3
define( \'THEME_URI\', get_template_directory_uri() );
define( \'THEME_JS\', trailingslashit( BASETHEME_THEME_URI ) . \'js/\' );
// Then, later on...
wp_enqueue_script( \'test-1\', THEME_JS . \'test-1.js\', \'jquery\', \'20120206\', true );
wp_enqueue_script( \'test-2\', THEME_JS . \'test-2.js\', \'jquery\', \'20120206\', true );
wp_enqueue_script( \'test-3\', THEME_JS . \'test-3.js\', \'jquery\', \'20120206\', true );
我的印象是,使用常量并不是一个好主意,即使它们是使用
get_template_directory_uri()
等,因为它们可能不灵活。
Here\'s WP trac中的一张票证,其中常量进近启动。查看一下(下面的示例),他们(可能)正在调用
get_template_directory_uri()
多次。
我知道这没什么大不了的,但我一直都会遇到这个问题,并且看到它在主题和插件方面做得不同。你们能帮我澄清一下吗?
// ...sample code from _s using the multiple calls to get_template_directory_uri()
/**
* Enqueue scripts and styles
*/
function _s_scripts() {
global $post;
wp_enqueue_style( \'style\', get_stylesheet_uri() );
wp_enqueue_script( \'jquery\' );
wp_enqueue_script( \'small-menu\', get_template_directory_uri() . \'/js/small-menu.js\', \'jquery\', \'20120206\', true );
if ( is_singular() && comments_open() && get_option( \'thread_comments\' ) ) {
wp_enqueue_script( \'comment-reply\' );
}
if ( is_singular() && wp_attachment_is_image( $post->ID ) ) {
wp_enqueue_script( \'keyboard-image-navigation\', get_template_directory_uri() . \'/js/keyboard-image-navigation.js\', array( \'jquery\' ), \'20120202\' );
}
}
add_action( \'wp_enqueue_scripts\', \'_s_scripts\' );