WooCommerce:仅在指定页面加载自定义函数及样式方案咨询
问题解答
1. 仅在购物车/结账页面加载结账相关函数的实现方案
完全可以,而且没必要用插件“取消加载”的迂回方式,直接用WordPress的条件标签做条件加载更高效:
- 先把那700行结账专属函数单独抽出来,存到子主题目录下的
checkout-functions.php文件里 - 在子主题的
functions.php里,用is_cart()和is_checkout()这两个官方条件标签判断,满足页面条件时再引入这个文件,示例代码:
// 这里写需要全局加载的300行函数 // ... // 仅在购物车或结账页面加载结账专属函数 if ( is_cart() || is_checkout() ) { require_once get_stylesheet_directory() . '/checkout-functions.php'; }
如果非要用插件实现,思路是把结账函数封装到插件中,同样用上述条件标签控制代码加载;如果是要取消已加载的无关脚本,可使用wp_dequeue_script()或wp_deregister_script()函数,结合wp_enqueue_scripts钩子做条件判断。
搜索方向可以参考:
- WordPress条件标签(is_cart、is_checkout)的用法
- WordPress 条件加载PHP文件
- WordPress 取消加载指定脚本
2. 按页面加载独立自定义CSS文件的方案
当然可以,同样用条件标签结合样式队列函数实现:
- 把结账相关的CSS代码单独提取到子主题目录下的
checkout-styles.css文件 - 在子主题
functions.php中通过wp_enqueue_style函数,配合条件标签控制加载,示例代码:
function enqueue_custom_styles() { // 加载全局自定义样式 wp_enqueue_style( 'global-custom-style', get_stylesheet_directory_uri() . '/styles.css', array(), wp_get_theme()->get('Version') ); // 仅在购物车/结账页面加载专属CSS if ( is_cart() || is_checkout() ) { wp_enqueue_style( 'checkout-custom-style', get_stylesheet_directory_uri() . '/checkout-styles.css', array('global-custom-style'), wp_get_theme()->get('Version') ); } } add_action( 'wp_enqueue_scripts', 'enqueue_custom_styles' );
这样就能保证只有购物车和结账页面会加载结账专属的CSS文件,避免全局加载冗余样式。
内容的提问来源于stack exchange,提问作者ilkork
相关产品推荐
相关产品推荐

