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

请求协助:在WooCommerce后台订单详情页添加一键复制功能

在WooCommerce后台订单详情页添加一键复制地址/电话/邮箱功能

你可以通过PHP钩子+JavaScript代码实现这个需求,直接把下面的代码放到主题functions.php文件里,或者创建一个简单的自定义插件即可:

1. 插入一键复制按钮

这段代码会在账单地址、配送地址区域的对应字段后生成复制按钮:

add_action('woocommerce_admin_order_data_after_billing_address', 'add_copy_buttons_to_order_details');
add_action('woocommerce_admin_order_data_after_shipping_address', 'add_copy_buttons_to_order_details');

function add_copy_buttons_to_order_details($order) {
    // 账单电话
    if ($order->get_billing_phone()) {
        echo '<p><button class="copy-btn" data-copy-text="' . esc_attr($order->get_billing_phone()) . '">复制电话</button></p>';
    }
    // 账单邮箱
    if ($order->get_billing_email()) {
        echo '<p><button class="copy-btn" data-copy-text="' . esc_attr($order->get_billing_email()) . '">复制邮箱</button></p>';
    }

    // 完整账单地址
    $billing_address = $order->get_formatted_billing_address();
    if ($billing_address) {
        echo '<p><button class="copy-btn" data-copy-text="' . esc_attr($billing_address) . '">复制账单地址</button></p>';
    }

    // 完整配送地址
    $shipping_address = $order->get_formatted_shipping_address();
    if ($shipping_address) {
        echo '<p><button class="copy-btn" data-copy-text="' . esc_attr($shipping_address) . '">复制配送地址</button></p>';
    }
}

2. 添加复制功能逻辑与基础样式

这段代码处理点击按钮后的复制操作,同时给按钮加一点适配后台风格的样式:

add_action('admin_footer', 'add_copy_button_script');

function add_copy_button_script() {
    // 仅在订单详情页加载脚本
    global $pagenow;
    if ($pagenow !== 'post.php' || get_post_type() !== 'shop_order') {
        return;
    }
    ?>
    <style>
        .copy-btn {
            padding: 4px 8px;
            font-size: 12px;
            cursor: pointer;
            background: #007cba;
            color: #fff;
            border: none;
            border-radius: 3px;
            margin-left: 8px;
        }
        .copy-btn:hover {
            background: #006ba1;
        }
    </style>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const copyButtons = document.querySelectorAll('.copy-btn');
            copyButtons.forEach(btn => {
                btn.addEventListener('click', function() {
                    const textToCopy = this.getAttribute('data-copy-text');
                    navigator.clipboard.writeText(textToCopy).then(() => {
                        // 临时提示复制成功
                        const originalText = this.textContent;
                        this.textContent = '已复制!';
                        setTimeout(() => {
                            this.textContent = originalText;
                        }, 1500);
                    }).catch(err => {
                        console.error('复制失败:', err);
                        alert('复制失败,请手动复制');
                    });
                });
            });
        });
    </script>
    <?php
}

额外说明

  • 代码会自动判断字段是否有内容,空字段不会显示对应按钮
  • 复制成功后按钮会临时显示"已复制!",1.5秒后恢复原文本
  • 样式和按钮位置可以根据需求自行调整,比如修改CSS或者PHP里的输出位置

内容的提问来源于stack exchange,提问作者mücahit bayraktar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:01:01