You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过functions.php的hooks实现产品分类页随机展示对应专属图片/视频

完全可以通过WordPress钩子实现该需求,仅需维护一套逻辑即可,无需单独修改每个分类页代码。

实现逻辑

通过wp_enqueue_scripts钩子判断当前页面所属产品分类,动态注入对应分类的素材集合到前端页面,通用随机展示逻辑全局复用。

具体代码实现

1. functions.php 新增钩子代码

add_action('wp_enqueue_scripts', 'inject_category_banner_materials');
function inject_category_banner_materials() {
    // 仅在产品分类页执行,若你的产品分类法不是product_cat请自行替换,默认文章分类可改为is_category()
    if (!is_tax('product_cat')) return;
    
    // 获取当前分类ID
    $current_cat_id = get_queried_object_id();
    
    // 配置各分类对应的素材集合,key为分类ID,value为素材数组
    $cat_materials = [
        // 示例:分类ID为12的服装分类素材
        12 => [
            '<a href="cloth-banner1.jpeg"><img src="cloth-banner1.jpeg"></a>',
            '<a href="cloth-banner2.jpeg"><img src="cloth-banner2.jpeg"></a>',
            '<a href="cloth-banner3.jpeg"><img src="cloth-banner3.jpeg"></a>',
            '<a href="cloth-banner4.jpeg"><img src="cloth-banner4.jpeg"></a>'
        ],
        // 示例:分类ID为25的数码分类素材
        25 => [
            '<a href="digital-banner1.jpeg"><img src="digital-banner1.jpeg"></a>',
            '<a href="digital-banner2.jpeg"><img src="digital-banner2.jpeg"></a>',
            '<a href="digital-banner3.jpeg"><img src="digital-banner3.jpeg"></a>'
        ]
        // 新增分类仅需在此处按格式添加对应配置即可
    ];
    
    // 当前分类无配置则不执行
    if (!isset($cat_materials[$current_cat_id])) return;
    
    // 将素材数组转为JSON注入为全局JS变量
    $inline_js = 'window.categoryBannerMaterials = ' . json_encode($cat_materials[$current_cat_id]) . ';';
    wp_add_inline_script('jquery', $inline_js, 'before');
    
    // 注入通用随机展示JS
    $random_js = <<<JS
    document.addEventListener('DOMContentLoaded', function() {
        const materials = window.categoryBannerMaterials;
        if (!materials || materials.length < 3) return;
        
        // 生成3个不重复的随机索引
        const randomIndexes = [];
        while (randomIndexes.length < 3) {
            const randomNum = Math.floor(Math.random() * materials.length);
            if (!randomIndexes.includes(randomNum)) {
                randomIndexes.push(randomNum);
            }
        }
        
        // 赋值到对应DOM元素
        document.getElementById('banner1').innerHTML = materials[randomIndexes[0]];
        document.getElementById('banner2').innerHTML = materials[randomIndexes[1]];
        document.getElementById('banner3').innerHTML = materials[randomIndexes[2]];
    });
JS;
    wp_add_inline_script('jquery', $random_js, 'after');
}

2. 原有代码清理

删除所有分类页单独添加的图片集配置和随机JS代码,仅需保留页面上banner1、banner2、banner3三个ID的容器元素即可。

后续维护方式

后续需要新增分类素材、修改已有分类的素材集合,仅需调整上述代码中$cat_materials数组的对应配置即可,无需修改其他代码。

内容的提问来源于stack exchange,提问作者PlainH2O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:36:02