- 加载脚本和样式表:也就是我们常说的 CSS 和 JavaScript 文件,它们决定了网站的外观和交互功能。
- 网页连接:包括主题自身的链接(如作者信息)、网站内部链接、以及与外部资源的连接(如社交媒体、API 等)。
下面我将分步、详细地进行说明。

第一部分:加载脚本和样式表 (Scripts & Styles)
在 WordPress 主题中,直接在 PHP 文件里用 <link> 或 <script> 标签引入 CSS 和 JS 是错误且不推荐的做法,这样做会:
- 导致重复加载:如果某个插件也需要加载同一个 jQuery 文件,就会导致页面加载两次,影响性能。
- 破坏依赖关系:WordPress 的核心库和许多插件都依赖于特定的脚本版本,硬编码加载可能会导致冲突。
- 不符合 WordPress 标准:WordPress 提供了官方、标准化的方法来处理这些资源。
核心函数:wp_enqueue_script() 和 wp_enqueue_style()
这是 WordPress 官方推荐的核心函数,用于“排队”并加载脚本和样式。
加载样式表
通常在 functions.php 文件中使用 wp_enqueue_style 函数。
基本用法:

function my_theme_enqueue_styles() {
// 1. 加载父主题的样式表 (如果你的主题是子主题)
// wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
// 2. 加载子主题的样式表
wp_enqueue_style(
'child-style', // 样式的唯一标识符 (Handle)
get_stylesheet_directory_uri() . '/style.css', // 样式表的 URL
array('parent-style'), // 依赖关系 (可选)
wp_get_theme()->get('Version'), // 版本号 (可选,推荐使用,用于缓存控制)
'all' // 媒体查询 (可选,默认是 'all')
);
// 3. 加载一个额外的 CSS 文件,比如一个动画库
wp_enqueue_style(
'animate-css',
'https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css'
);
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
参数解释:
$handle(字符串): 样式的唯一名称,用于后续操作(如移除)。$src(字符串): 样式文件的完整 URL。get_stylesheet_directory_uri()获取当前主题目录的 URL,对于子主题和父主题都适用。$deps(数组): 该样式所依赖的其他样式handle,Bootstrap 的 CSS 必须在 jQuery 之前加载(虽然 CSS 不依赖 JS,但概念类似),如果依赖的样式没有先加载,WordPress 会自动调整加载顺序。$ver(字符串|null): 版本号,强烈建议使用wp_get_theme()->get('Version'),这样每次更新主题时,CSS 文件的 URL 会改变,强制浏览器下载新文件,避免旧样式缓存问题。$media(字符串): 样式应用的媒体类型,如all,screen,print。
加载 JavaScript
同样在 functions.php 中,使用 wp_enqueue_script 函数。
基本用法:
function my_theme_enqueue_scripts() {
// 1. 加载 jQuery (WordPress 自带)
// 注意:默认情况下,jQuery 在 WordPress 中是以 "noConflict" 模式加载的,
// 所以在 JS 文件中应该使用 jQuery 而不是 $,或者使用一个立即执行函数来包裹你的代码。
wp_enqueue_script('jquery');
// 2. 加载自定义 JS 文件
wp_enqueue_script(
'custom-script', // 脚本的唯一标识符
get_stylesheet_directory_uri() . '/js/custom.js', // JS 文件的 URL
array('jquery'), // 依赖关系 (这里依赖 jQuery)
wp_get_theme()->get('Version'), // 版本号
true // 是否在 footer 加载 (true 推荐,可以加快页面渲染速度)
);
// 3. 如何向 JS 传递 PHP 变量
wp_localize_script(
'custom-script', // 要传递变量的脚本 Handle (必须和上面注册的一致)
'myThemeData', // 传递到 JS 中的对象名称
array(
'ajax_url' => admin_url('admin-ajax.php'), // AJAX 处理的 URL
'nonce' => wp_create_nonce('my_theme_nonce'), // 安全令牌
'home_url' => home_url(),
'some_option' => get_option('my_theme_option_name') // 获取一个主题选项
)
);
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_scripts' );
参数解释:

$handle,$src,$deps,$ver与wp_enqueue_style类似。$in_footer(布尔值): 是否在</body>标签之前加载。强烈建议设置为true,这样可以避免阻塞页面的 HTML 解析,显著提升页面加载速度。
如何在 JS 文件中使用 PHP 变量?
使用 wp_localize_script 函数后,你的 custom.js 文件中就可以这样访问:
// custom.js
(function($) {
// 使用 myThemeData 对象
console.log(myThemeData.ajax_url);
console.log(myThemeData.some_option);
// 一个使用 AJAX 的例子
$.post(myThemeData.ajax_url, {
action: 'my_ajax_action', // 指向一个 PHP 函数
_ajax_nonce: myThemeData.nonce, // 发送安全令牌
data: 'some data to send'
}, function(response) {
console.log(response);
});
})(jQuery);
第二部分:网页连接
这里的“连接”含义比较广泛,我们分几种常见情况来讨论。
主题自身的链接
这是最常见的,比如在主题的页脚或“页面中,添加指向作者网站的链接。
直接在 PHP 模板文件中使用 get_template_directory_uri() 或 get_stylesheet_directory_uri()
<!-- 在 footer.php 或其他模板文件中 -->
<a href="<?php echo esc_url( get_theme_mod( 'author_link', 'https://example.com' ) ); ?>">
<?php echo esc_html( get_theme_mod( 'author_name', 'Your Name' ) ); ?>
</a>
get_theme_mod(): 从“外观 > 自定义”中获取设置,如果没有设置,则使用第二个参数作为默认值。esc_url(): 对 URL 进行转义,防止 XSS 攻击。esc_html(): 对 HTML 进行转义,防止 XSS 攻击。
使用 add_theme_support() 和 wp_get_theme() 在主题信息中定义链接
在 functions.php 中添加主题支持,可以在“外观 > 主题”页面看到这些信息。
// functions.php
function my_theme_setup() {
// 添加主题支持
add_theme_support( 'post-thumbnails' ); // 特色图片
add_theme_support( 'title-tag' ); // 自动管理文档标题
// 定义作者信息 (这是标准做法)
$theme = wp_get_theme();
if ( is_child_theme() ) {
$theme = wp_get_theme( get_template() );
}
$theme->Author = 'Your Name';
$theme->AuthorURI = 'https://your-website.com';
}
add_action( 'after_setup_theme', 'my_theme_setup' );
这样,在 WordPress 后台的主题详情页,就会显示作者和作者网站的链接。
网站内部链接
这是指在你的主题模板中,动态生成指向网站其他页面的链接。
-
首页链接:
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">首页</a>
home_url()是获取站点首页 URL 的标准函数。 -
文章/页面链接:
<?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php endwhile; ?> <?php endif; ?>the_permalink()获取当前文章或页面的固定链接。 -
分类/标签/自定义分类法链接:
<?php $categories = get_categories(); foreach ( $categories as $category ) { echo '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a>'; } ?>get_category_link()获取分类的链接。
外部资源链接
包括社交媒体图标、API 接口、外部 CDN 资源等。
-
社交媒体链接: 通常在
footer.php或header.php中放置社交媒体图标。<!-- 在 header.php 的导航栏或 footer.php 中 --> <div class="social-links"> <a href="https://facebook.com/yourpage" target="_blank" rel="noopener noreferrer"> <i class="fab fa-facebook-f"></i> </a> <a href="https://twitter.com/yourprofile" target="_blank" rel="noopener noreferrer"> <i class="fab fa-twitter"></i> </a> </div>target="_blank": 在新标签页中打开链接。rel="noopener noreferrer": 非常重要的安全属性,可以防止window.opener攻击,保护你的网站安全。
-
连接到外部 API: 这通常通过 JavaScript 完成,在
functions.php中将 API 的基础 URL 和密钥传递给 JS,然后在 JS 中发起请求。PHP (
functions.php):function my_theme_enqueue_scripts() { wp_enqueue_script('api-script', get_stylesheet_directory_uri() . '/js/api-handler.js', array(), '1.0', true); wp_localize_script('api-script', 'apiData', array( 'apiKey' => 'YOUR_SECRET_API_KEY', 'baseUrl' => 'https://api.example.com/v1/' )); } add_action('wp_enqueue_scripts', 'my_theme_enqueue_scripts');JS (
js/api-handler.js):(function($) { $.ajax({ url: apiData.baseUrl + 'some-endpoint', method: 'GET', headers: { 'Authorization': 'Bearer ' + apiData.apiKey }, success: function(response) { console.log('API Response:', response); }, error: function(error) { console.error('API Error:', error); } }); })(jQuery);
总结与最佳实践
- 永远使用
wp_enqueue_script/style: 这是加载 JS/CSS 的唯一正确方式。 - 版本号很重要: 使用
wp_get_theme()->get('Version')来管理 CSS/JS 文件的缓存。 - 将 JS 放在 Footer: 设置
$in_footer = true以优化页面加载性能。 - 使用
wp_localize_script传递数据: 不要在 JS 中硬编码 PHP 变量,这是最安全、最标准的方式。 - 始终转义输出: 在 PHP 中输出 URL (
esc_url) 和 HTML (esc_html),以防止 XSS 安全漏洞。 - 为新标签页添加安全属性: 使用
target="_blank"时,务必加上rel="noopener noreferrer"。 - 利用主题自定义器: 对于主题选项(如作者链接、Logo URL),使用
get_theme_mod(),这样用户就可以在“外观 > 自定义”中轻松修改,而无需编辑代码。
遵循这些原则,你就能构建出既符合 WordPress 标准又安全、高效的主题。
