get_template_directory_uri 和 get_theme_file_uri 哪一个更好?为什么?

AB *_*dik 2 wordpress wordpress-theming

当我为 WordPress 主题编码时,wp_enqueue_scripts()我注意到了一件事。我看到get_theme_file_uri()工作正常也get_template_directory_uri()工作正常

wp_enqueue_style('fontawesome-css', get_theme_file_uri("/assets/css/font-awesome/css/font-awesome.min.css"), null, "1.0");
Run Code Online (Sandbox Code Playgroud)

wp_enqueue_style( 'fontawesome-css', get_template_directory_uri() . '/assets/css/font-awesome/css/font-awesome.min.css', null, '1.0' );
Run Code Online (Sandbox Code Playgroud)

所以我真的很困惑我的代码中将使用哪一个,为什么?

Web*_*102 8

get_theme_file_uri() 的函数定义应该告诉您正确的答案。

function get_theme_file_uri( $file = '' ) {
    $file = ltrim( $file, '/' );

    if ( empty( $file ) ) {
        $url = get_stylesheet_directory_uri();
    } elseif ( file_exists( get_stylesheet_directory() . '/' . $file ) ) {
        $url = get_stylesheet_directory_uri() . '/' . $file;
    } else {
        $url = get_template_directory_uri() . '/' . $file;
    }

    return apply_filters( 'theme_file_uri', $url, $file );
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它首先检查子主题并检查文件是否存在。如果您不使用子主题并且确定该文件存在,那么您可以使用 get_template_directory_uri() 以获得更好的性能。