“use client”;
import React from “react”;
function MainComponent() {
const [userData, setUserData] = useState({
level: 1,
exp: 0,
badges: [],
items: [],
totalSales: 0,
totalProfit: 0,
});
const [showAddItem, setShowAddItem] = useState(false);
const [newItem, setNewItem] = useState({
name: “”,
purchasePrice: “”,
sellingPrice: “”,
category: “”,
tags: [],
});
const handleAddItem = useCallback(() => {
const profit = Number(newItem.sellingPrice) – Number(newItem.purchasePrice);
const expGained = Math.floor(profit / 100);
setUserData((prev) => ({ ...prev, exp: prev.exp + expGained, totalSales: prev.totalSales + Number(newItem.sellingPrice), totalProfit: prev.totalProfit + profit, items: [...prev.items, newItem],
}));
setShowAddItem(false);
setNewItem({ name: "", purchasePrice: "", sellingPrice: "", category: "", tags: [],
});}, [newItem]);
return (
レベル {userData.level}
${(userData.exp % 1000) / 10}% }} >
総売上: ¥{userData.totalSales.toLocaleString()}
総利益: ¥{userData.totalProfit.toLocaleString()}
<button onClick={() => setShowAddItem(true)} className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600 transition-colors" > 商品を追加 <i className="fas fa-plus ml-2"></i> </button> </div> {showAddItem && ( <div className="bg-white rounded-lg shadow-lg p-6 mb-6"> <h2 className="text-xl font-bold mb-4">新規商品登録</h2> <div className="space-y-4"> <input type="text" name="name" placeholder="商品名" className="w-full p-2 border rounded" value={newItem.name} onChange={(e) => setNewItem({ ...newItem, name: e.target.value }) } /> <input type="number" name="purchasePrice" placeholder="仕入れ価格" className="w-full p-2 border rounded" value={newItem.purchasePrice} onChange={(e) => setNewItem({ ...newItem, purchasePrice: e.target.value }) } /> <input type="number" name="sellingPrice" placeholder="販売価格" className="w-full p-2 border rounded" value={newItem.sellingPrice} onChange={(e) => setNewItem({ ...newItem, sellingPrice: e.target.value }) } /> <input type="text" name="category" placeholder="カテゴリー" className="w-full p-2 border rounded" value={newItem.category} onChange={(e) => setNewItem({ ...newItem, category: e.target.value }) } /> <div className="flex justify-end space-x-2"> <button onClick={() => setShowAddItem(false)} className="px-4 py-2 border rounded" > キャンセル </button> <button onClick={handleAddItem} className="px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600" > 登録 </button> </div> </div> </div> )} <div className="bg-white rounded-lg shadow-lg p-6"> <h2 className="text-xl font-bold mb-4">登録商品一覧</h2> <div className="grid grid-cols-1 md:grid-cols-2 gap-4"> {userData.items.map((item, index) => ( <div key={index} className="border rounded p-4"> <h3 className="font-bold">{item.name}</h3> <p>カテゴリー: {item.category}</p> <p> 仕入れ価格: ¥{Number(item.purchasePrice).toLocaleString()} </p> <p>販売価格: ¥{Number(item.sellingPrice).toLocaleString()}</p> <p className="text-green-600"> 利益: ¥ {( Number(item.sellingPrice) - Number(item.purchasePrice) ).toLocaleString()} </p> </div> ))} </div> </div> </div>
</div>);
}
export default MainComponent;
function user_dashboard() {
if (is_user_logged_in()) {
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
// ユーザーデータを取得 $user_sales = get_user_meta($user_id, 'total_sales', true) ?: 0; $user_badges = get_user_meta($user_id, 'badges', true) ?: 'なし'; // ダッシュボード内容 ob_start(); ?> <h2>こんにちは、<?php echo esc_html($current_user->display_name); ?>さん!</h2> <p>総売上: <?php echo esc_html($user_sales); ?> 円</p> <p>獲得バッジ: <?php echo esc_html($user_badges); ?></p> <?php return ob_get_clean();
} else { return '<p>ログインしてください。</p>';
}}
add_shortcode(‘user_dashboard’, ‘user_dashboard’);function user_dashboard() {
if (is_user_logged_in()) {
$current_user = wp_get_current_user();
$user_id = $current_user->ID;
// ユーザーデータを取得 $user_sales = get_user_meta($user_id, 'total_sales', true) ?: 0; $user_badges = get_user_meta($user_id, 'badges', true) ?: 'なし'; // ダッシュボード内容 ob_start(); ?> <h2>こんにちは、<?php echo esc_html($current_user->display_name); ?>さん!</h2> <p>総売上: <?php echo esc_html($user_sales); ?> 円</p> <p>獲得バッジ: <?php echo esc_html($user_badges); ?></p> <?php return ob_get_clean();
} else { return '<p>ログインしてください。</p>';
}}
add_shortcode(‘user_dashboard’, ‘user_dashboard’);
さっさの中古せどり