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"