HEX
Server: nginx
System: Linux f62c58717270 6.1.0-17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.69-1 (2023-12-30) x86_64
User: www-data (1000)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /www/wp-cli/add_currency.sh
#!/bin/sh

# ================= 配置 =================
ROOT_DIR="/www/sites/"
GLOBAL_LOG_FILE="/www/wp-cli/wmc_option_init_log.txt"
FLAG_NAME=".wmc_option_done"
DOMAIN_RECORD_FILE="/www/wp-cli/wmc_option_domains.txt"   # 成功站点记录
DOMAIN_FILTER_FILE="/www/wp-cli/wmc_option_filter.txt"    # 域名过滤列表,每行一个域名

PLUGIN_SLUG="woodmart-multi-currency"
PLUGIN_FILE="woodmart-multi-currency/woodmart-multi-currency.php"

echo "========= WMC INIT START $(date) =========" > "$GLOBAL_LOG_FILE"
echo "========= DOMAIN RECORD START $(date) =========" > "$DOMAIN_RECORD_FILE"

TOTAL=0
PROCESSED=0
SKIPPED=0
FAILED=0

# ================= 遍历所有站点 =================
find "$ROOT_DIR" -type f -name "wp-config.php" | while IFS= read -r CONFIG_PATH; do
    TOTAL=$((TOTAL + 1))
    SITE_DIR=$(dirname "$CONFIG_PATH")
    FLAG_FILE="$SITE_DIR/$FLAG_NAME"
    LOG_FILE="$SITE_DIR/wmc_option_init.log"

    echo "--------------------------------------"
    echo "站点 $TOTAL: $SITE_DIR"

    # ================= 跳过已处理 =================
    if [ -f "$FLAG_FILE" ]; then
        echo "⏭ 已处理,跳过"
        SKIPPED=$((SKIPPED + 1))
        continue
    fi

    DOMAIN=$(echo "$SITE_DIR" | sed "s|$ROOT_DIR||" | cut -d/ -f1)
    DOMAIN=$(echo "$DOMAIN" | sed 's/^www\.//')

    # ================= 域名过滤 =================
    if [ -f "$DOMAIN_FILTER_FILE" ]; then
        if ! grep -Fxq "$DOMAIN" "$DOMAIN_FILTER_FILE"; then
            echo "⏭ 域名不在过滤列表,跳过: $DOMAIN"
            SKIPPED=$((SKIPPED + 1))
            continue
        fi
    fi

    echo "🌐 站点: $DOMAIN"

    # ================= 插件检测 + 激活 =================
    echo "🔌 检查插件..."
    PLUGIN_STATUS="unknown"
    wp plugin is-installed "$PLUGIN_SLUG" --path="$SITE_DIR" --allow-root > /dev/null 2>&1

    if [ $? -ne 0 ]; then
        echo "⬇ 插件未安装,跳过..."
        PLUGIN_STATUS="not_installed"
    else
        wp plugin activate "$PLUGIN_FILE" --path="$SITE_DIR" --allow-root >> "$LOG_FILE" 2>&1
        wp plugin is-active "$PLUGIN_FILE" --path="$SITE_DIR" --allow-root > /dev/null 2>&1
        if [ $? -eq 0 ]; then
            echo "✔ 插件已启用"
            PLUGIN_STATUS="active"
        else
            echo "✘ 插件启用失败"
            PLUGIN_STATUS="inactive"
        fi
    fi

    if [ "$PLUGIN_STATUS" != "active" ]; then
        echo "❌ 插件未正常启用,跳过该站点"
        echo "$(date '+%Y-%m-%d %H:%M:%S') - SKIP: $DOMAIN (插件状态: $PLUGIN_STATUS)" >> "$LOG_FILE"
        echo "⏭ SKIP: $DOMAIN (插件状态: $PLUGIN_STATUS)" >> "$GLOBAL_LOG_FILE"
        FAILED=$((FAILED + 1))
        continue
    fi

    # ================= 写入配置 =================
    RESULT=$(wp eval '
        $options = [
            "wmc_db_version"               => "1.0.0",
            "wmc_hide_woodmart_notice"     => "",
            "wmc_last_rate_base"           => "USD",
            "wmc_last_rate_date"           => "2026-04-06",
            "wmc_last_rate_update"         => "2026-04-07 05:58:09",
            "wmc_show_code"                => "1",
            "wmc_show_flag"                => "1",
            "wmc_show_name"                => "",
            "wmc_show_symbol"              => "1",
            "wmc_style_bg_color"           => "",
            "wmc_style_border_radius"      => "4",
            "wmc_style_custom_css"         => "",
            "wmc_style_dropdown_width"     => "200",
            "wmc_style_flag_size"          => "20",
            "wmc_style_font_size"          => "14",
            "wmc_style_hover_bg"           => "",
            "wmc_style_hover_text"         => "",
            "wmc_style_text_color"         => "",
            "wmc_switcher_style"           => "dropdown",
            "wmc_update_interval"          => "daily",
            "wmc_woodmart_auto_inject"     => "",
            "wmc_woodmart_mobile_inject"   => "1",
            "wmc_api_url"                  => "https://seo.edatastore.io/api/get_rate",
        ];

        $added = 0;
        foreach ($options as $key => $value) {
            if (get_option($key, null) === null) {
                add_option($key, $value);
                $added++;
            }
        }
        wp_cache_delete("alloptions", "options");
        echo json_encode(["added"=>$added,"status"=>"DONE"]);
    ' --path="$SITE_DIR" --allow-root 2>/dev/null)

    STATUS=$(echo "$RESULT" | grep -o '"status":"[^"]*"' | cut -d':' -f2 | tr -d '"')
    ADDED=$(echo "$RESULT" | grep -o '"added":[0-9]*' | cut -d':' -f2)

    if [ "$STATUS" = "DONE" ]; then
        touch "$FLAG_FILE"
        echo "$(date '+%Y-%m-%d %H:%M:%S') - DONE: $DOMAIN (新增 $ADDED 条, 插件: $PLUGIN_STATUS)" >> "$LOG_FILE"
        echo "✔ DONE: $DOMAIN (新增 $ADDED 条, 插件: $PLUGIN_STATUS)" >> "$GLOBAL_LOG_FILE"
        echo "$DOMAIN" >> "$DOMAIN_RECORD_FILE"
        PROCESSED=$((PROCESSED + 1))
    else
        echo "$(date '+%Y-%m-%d %H:%M:%S') - FAIL: $DOMAIN" >> "$LOG_FILE"
        echo "✘ FAIL: $DOMAIN" >> "$GLOBAL_LOG_FILE"
        FAILED=$((FAILED + 1))
    fi

done

# ================= 总结 =================
echo "========= 完成 ========="
echo "总数: $TOTAL"
echo "成功: $PROCESSED"
echo "跳过: $SKIPPED"
echo "失败: $FAILED"
echo "日志: $GLOBAL_LOG_FILE"
echo "成功域名记录: $DOMAIN_RECORD_FILE"