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

WordPress中PHP自定义代码后置操作及AJAX请求路径问询

WordPress插件后台批量修改产品价格的实现规范

一、符合WordPress规范的HTTP请求路径

WordPress官方推荐使用AJAX API处理后台异步请求,无需自定义独立PHP文件,统一请求入口为:
/wp-admin/admin-ajax.php

所有后台AJAX请求都通过这个路径,仅需通过action参数区分不同的处理逻辑。

二、按钮关联与请求实现步骤

1. 在后台设置页添加触发按钮

在已有的插件后台表单区域插入按钮代码:

// 输出批量更新按钮
echo '<button type="button" id="bulk-update-product-prices" class="button button-primary">批量更新产品价格</button>';

2. 注册AJAX处理动作

在插件主文件中注册后台专属的AJAX处理动作,确保仅授权用户可操作:

// 注册AJAX动作,仅后台登录用户可访问
add_action('wp_ajax_bulk_update_prices', 'handle_bulk_product_price_update');

function handle_bulk_product_price_update() {
    // 权限校验:确保用户拥有产品编辑权限
    if (!current_user_can('edit_products')) {
        wp_send_json_error('无操作权限');
    }

    // 遍历所有产品并修改价格的核心逻辑
    $product_args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish'
    );
    $products = get_posts($product_args);

    foreach ($products as $product) {
        $wc_product = wc_get_product($product->ID);
        if ($wc_product) {
            // 替换为你的价格修改规则,例如加价10%
            $new_price = $wc_product->get_regular_price() * 1.1;
            $wc_product->set_regular_price($new_price);
            $wc_product->save();
        }
    }

    wp_send_json_success('产品价格批量更新完成');
}

3. 前端JS绑定按钮请求

在插件后台页面注入JS,绑定按钮点击事件并发送AJAX请求:

// 后台页脚注入JS代码
add_action('admin_footer', 'bulk_price_update_admin_js');

function bulk_price_update_admin_js() {
    // 仅在插件设置页面加载该JS
    if (isset($_GET['page']) && $_GET['page'] === '你的插件设置页slug') {
        ?>
        <script>
            const updateBtn = document.getElementById('bulk-update-product-prices');
            updateBtn.addEventListener('click', function() {
                if (confirm('确定要批量更新所有产品价格吗?')) {
                    fetch('<?php echo admin_url('admin-ajax.php'); ?>', {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/x-www-form-urlencoded',
                            'X-WP-Nonce': '<?php echo wp_create_nonce('bulk-price-update-nonce'); ?>'
                        },
                        body: 'action=bulk_update_prices'
                    })
                    .then(res => res.json())
                    .then(data => {
                        alert(data.success ? data.data : '更新失败:' + data.data);
                    })
                    .catch(err => alert('请求出错:' + err));
                }
            });
        </script>
        <?php
    }
}

4. 关键安全优化

  • 权限校验:必须通过current_user_can()限制操作权限,防止未授权访问。
  • Nonce验证:在处理函数开头添加check_ajax_referer('bulk-price-update-nonce');,验证请求合法性。
  • 批量处理优化:若产品数量过大,建议通过offset参数分批处理,避免请求超时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:10:01