WordPress如何根据站点子目录加载对应自定义CSS(Polylang场景)
Polylang多语言站点按语言加载额外CSS实现方案
你写的基础逻辑可行,但WordPress环境下不建议直接硬写link标签、写死完整URL做判断,优先用官方钩子+Polylang原生能力实现,兼容性更好,不会因为换域名、调整站点结构失效。
优先方案:用Polylang原生语言判断(推荐)
把以下代码加入当前主题的functions.php文件即可:
function custom_load_language_styles() { // 加载全局通用样式 wp_enqueue_style( 'global-default-style', get_stylesheet_directory_uri() . '/yellow.css', [], '1.0.0', 'screen,projection' ); // 检测Polylang插件存在,且当前页面语言为阿拉伯语(ar为阿拉伯语默认语言代码) if ( function_exists('pll_current_language') && pll_current_language() === 'ar' ) { wp_enqueue_style( 'arabic-special-style', get_stylesheet_directory_uri() . '/blue.css', ['global-default-style'], '1.0.0', 'screen' ); } } add_action( 'wp_enqueue_scripts', 'custom_load_language_styles' );
注意:代码里的CSS路径请替换为你站点内实际的文件存放路径,示例写法对应主题根目录下的CSS文件。
备选方案:按URL子目录路径匹配(不推荐)
如果有特殊需求必须通过URL子目录判断,把上面代码里的语言判断逻辑替换成以下路径匹配逻辑即可:
$current_request_path = trim( parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ), '/' ); // 匹配路径以/ar开头的阿拉伯语页面 if ( strpos($current_request_path, 'ar') === 0 ) { // 此处放置阿拉伯语样式加载逻辑 }
- 不要写死完整域名做判断,否则切换测试环境、更换站点域名时逻辑会直接失效
- 用
wp_enqueue_style加载样式是WordPress官方规范,可自动处理样式依赖顺序,避免重复加载问题 - 如果你在Polylang后台给阿拉伯语设置了自定义语言代码,去后台语言列表找到对应代码替换判断条件里的
ar即可
内容的提问来源于stack exchange,提问作者burak
相关产品推荐
相关产品推荐

