{"id":13644,"date":"2026-05-19T20:27:31","date_gmt":"2026-05-19T11:27:31","guid":{"rendered":"https:\/\/bbr-1b92faa.ufwpcs.net\/?p=13644"},"modified":"2026-05-19T21:21:43","modified_gmt":"2026-05-19T12:21:43","slug":"gemini%e3%81%abwordpress%e3%81%ae%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0html%e3%81%ab%e5%85%a5%e3%82%8b%e5%bd%a2%e3%81%a7%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e3%82%92%e6%9b%b8%e3%81%84%e3%81%a6","status":"publish","type":"post","link":"https:\/\/bbr-1b92faa.ufwpcs.net\/?p=13644","title":{"rendered":"Gemini\u306bWordPress\u306e\u30ab\u30b9\u30bf\u30e0HTML\u306b\u5165\u308b\u5f62\u3067\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u66f8\u3044\u3066\u3082\u3089\u3044\u307e\u3057\u305f\u3002"},"content":{"rendered":"\n<div class=\"wp-countup-container\">\n    <!-- \u5165\u529b\u30d5\u30a9\u30fc\u30e0\u30a8\u30ea\u30a2 -->\n    <div class=\"wp-input-group\">\n        <label>\u521d\u671f\u5024: <input type=\"number\" id=\"wp-start-val\" value=\"0\"\/><\/label>\n        <label>\u5897\u5206: <input type=\"number\" id=\"wp-step-val\" value=\"1\" min=\"1\"\/><\/label>\n        <label>\u6700\u7d42\u5024: <input type=\"number\" id=\"wp-end-val\" value=\"10\"\/><\/label>\n    <\/div>\n    \n    <!-- \u30ab\u30a6\u30f3\u30c8\u8868\u793a\u3068\u30dc\u30bf\u30f3 -->\n    <div id=\"wp-countup-display\">0<\/div>\n    <button id=\"wp-countup-btn\" onclick=\"startWpCountup()\">\u30ab\u30a6\u30f3\u30c8\u30a2\u30c3\u30d7\u958b\u59cb<\/button>\n<\/div>\n\n<style>\n.wp-countup-container {\n    text-align: center;\n    background: #f4f7fe;\n    padding: 25px 20px;\n    border-radius: 12px;\n    box-shadow: 0 4px 12px rgba(0,0,0,0.05);\n    max-width: 400px;\n    margin: 20px auto;\n    border: 1px solid #dcdcdc;\n    font-family: sans-serif;\n}\n.wp-input-group {\n    display: flex;\n    justify-content: space-between;\n    gap: 10px;\n    margin-bottom: 20px;\n}\n.wp-input-group label {\n    font-size: 13px;\n    color: #555;\n    text-align: left;\n    display: flex;\n    flex-direction: column;\n    width: 30%;\n}\n.wp-input-group input {\n    padding: 6px;\n    font-size: 14px;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n    margin-top: 4px;\n    text-align: center;\n}\n#wp-countup-display {\n    font-size: 54px;\n    font-weight: bold;\n    color: #2e7d32; \/* \u30ab\u30a6\u30f3\u30c8\u30a2\u30c3\u30d7\u306f\u7dd1\u7cfb\u306b\u3057\u3066\u3044\u307e\u3059 *\/\n    margin-bottom: 15px;\n    line-height: 1;\n}\n#wp-countup-btn {\n    padding: 12px 24px;\n    font-size: 16px;\n    background-color: #2e7d32;\n    color: white;\n    border: none;\n    border-radius: 6px;\n    cursor: pointer;\n    transition: background 0.2s;\n    font-weight: bold;\n    width: 100%;\n    max-width: 220px;\n}\n#wp-countup-btn:hover {\n    background-color: #1b5e20;\n}\n#wp-countup-btn:disabled {\n    background-color: #ccc;\n    cursor: not-allowed;\n}\n<\/style>\n \n<script>\nfunction startWpCountup() {\n    const displayElement = document.getElementById('wp-countup-display');\n    const btn = document.getElementById('wp-countup-btn');\n    \n    const startVal = parseInt(document.getElementById('wp-start-val').value, 10) || 0;\n    const stepVal = parseInt(document.getElementById('wp-step-val').value, 10) || 1;\n    const endVal = parseInt(document.getElementById('wp-end-val').value, 10) || 0;\n    \n    if (startVal >= endVal) {\n        alert(\"\u6700\u7d42\u5024\u306f\u521d\u671f\u5024\u3088\u308a\u5927\u304d\u3044\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\");\n        return;\n    }\n    if (stepVal <= 0) {\n        alert(\"\u5897\u5206\u306f1\u4ee5\u4e0a\u306e\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\");\n        return;\n    }\n\n    let currentCount = startVal;\n    btn.disabled = true;\n    displayElement.innerText = currentCount;\n    \n    const interval = setInterval(() => {\n        \/\/ \u6b21\u306b\u8db3\u3057\u305f\u3068\u304d\u306e\u6570\u3092\u30c1\u30a7\u30c3\u30af\n        if (currentCount + stepVal <= endVal) {\n            currentCount += stepVal;\n            displayElement.innerText = currentCount;\n        } else {\n            \/\/ \u6b21\u306b\u8db3\u3059\u3068\u6700\u7d42\u5024\u3092\u8d85\u3048\u308b\u5834\u5408\u306f\u7d42\u4e86\n            clearInterval(interval);\n            setTimeout(() => {\n                \/\/ \u6587\u5b57\u5316\u3051\u306e\u539f\u56e0\u306b\u306a\u308b\u7d75\u6587\u5b57\u3092\u7121\u304f\u3057\u3001\u30b7\u30f3\u30d7\u30eb\u306a\u30c6\u30ad\u30b9\u30c8\u306b\u3057\u307e\u3057\u305f\n                displayElement.innerText = \"\u7d42\u4e86\uff08\" + currentCount + \"\uff09\";\n                btn.disabled = false;\n            }, 500);\n        }\n    }, 1000);\n}\n<\/script>\n\n\n\n<div class=\"wp-clock-container\">\n    <div class=\"wp-clock-title\">\u65e5\u672c\u6a19\u6e96\u6642\uff08JST\uff09<\/div>\n    <div id=\"wp-clock-display\">00:00:00<\/div>\n<\/div>\n\n<style>\n\/* WordPress\u7528\u306e\u30b7\u30f3\u30d7\u30eb\u306a\u6642\u8a08\u30c7\u30b6\u30a4\u30f3 *\/\n.wp-clock-container {\n    text-align: center;\n    background: #1e1e24; \/* \u6642\u8a08\u3089\u3057\u304f\u5f15\u304d\u7de0\u307e\u308b\u30c0\u30fc\u30af\u30ab\u30e9\u30fc *\/\n    padding: 25px 20px;\n    border-radius: 12px;\n    box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n    max-width: 320px;\n    margin: 20px auto;\n    font-family: 'Courier New', Courier, monospace; \/* \u30c7\u30b8\u30bf\u30eb\u6642\u8a08\u98a8\u306e\u30d5\u30a9\u30f3\u30c8 *\/\n}\n.wp-clock-title {\n    font-size: 14px;\n    color: #888;\n    margin-bottom: 8px;\n    letter-spacing: 2px;\n}\n#wp-clock-display {\n    font-size: 42px;\n    font-weight: bold;\n    color: #00ff66; \/* \u9bae\u3084\u304b\u306a\u30c7\u30b8\u30bf\u30eb\u30b0\u30ea\u30fc\u30f3 *\/\n    line-height: 1;\n}\n<\/style>\n\n<script>\nfunction startWpClock() {\n    const clockElement = document.getElementById('wp-clock-display');\n\n    function updateClock() {\n        \/\/ \u5e38\u306b\u65e5\u672c\u6a19\u6e96\u6642\uff08JST\uff09\u306e\u73fe\u5728\u6642\u523b\u3092\u53d6\u5f97\u3057\u3066\u8a08\u7b97\n        const now = new Date();\n        const jstOffset = 9 * 60 * 60 * 1000; \/\/ JST\u306fUTC+9\u6642\u9593\n        const utc = now.getTime() + (now.getTimezoneOffset() * 60 * 1000);\n        const jstTime = new Date(utc + jstOffset);\n\n        \/\/ \u6642\u30fb\u5206\u30fb\u79d2\u3092\u305d\u308c\u305e\u308c2\u6841\u306e\u5f62\uff0800\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\uff09\u306b\u6574\u3048\u308b\n        const hours = String(jstTime.getHours()).padStart(2, '0');\n        const minutes = String(jstTime.getMinutes()).padStart(2, '0');\n        const seconds = String(jstTime.getSeconds()).padStart(2, '0');\n\n        \/\/ \u753b\u9762\u306b\u8868\u793a\n        clockElement.innerText = hours + \":\" + minutes + \":\" + seconds;\n    }\n\n    \/\/ \u30da\u30fc\u30b8\u304c\u958b\u304b\u308c\u305f\u77ac\u9593\u306b1\u56de\u76ee\u3092\u5b9f\u884c\n    updateClock();\n    \n    \/\/ \u305d\u306e\u5f8c\u30011\u79d2\uff081000\u30df\u30ea\u79d2\uff09\u3054\u3068\u306b\u305a\u3063\u3068\u30ab\u30a6\u30f3\u30c8\u30a2\u30c3\u30d7\uff08\u66f4\u65b0\uff09\u3092\u7d9a\u3051\u308b\n    setInterval(updateClock, 1000);\n}\n\n\/\/ \u30b9\u30af\u30ea\u30d7\u30c8\u304c\u8aad\u307f\u8fbc\u307e\u308c\u305f\u3089\u81ea\u52d5\u3067\u6642\u8a08\u3092\u30b9\u30bf\u30fc\u30c8\u3055\u305b\u308b\nstartWpClock();\n<\/script>\n\n\n\n<div class=\"wp-geo-container\">\n    <div class=\"wp-geo-title\">\u73fe\u5728\u5730\u306e\u6c17\u8c61\u30c7\u30fc\u30bf<\/div>\n    \n    <button id=\"wp-geo-btn\" onclick=\"getGeoAndWeather()\">\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b<\/button>\n    \n    <div id=\"wp-geo-status\" class=\"wp-status-text\">\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u53d6\u5f97\u3092\u958b\u59cb\u3057\u307e\u3059<\/div>\n    \n    <table class=\"wp-geo-table\">\n        <tr>\n            <th>\u7def\u5ea6\uff08\u5317\u7def\uff09<\/th>\n            <td id=\"wp-lat\">&#8211;<\/td>\n        <\/tr>\n        <tr>\n            <th>\u7d4c\u5ea6\uff08\u6771\u7d4c\uff09<\/th>\n            <td id=\"wp-lng\">&#8211;<\/td>\n        <\/tr>\n        <tr>\n            <th>\u73fe\u5728\u306e\u6c17\u5727<\/th>\n            <td id=\"wp-pressure\">&#8211;<\/td>\n        <\/tr>\n        <tr>\n            <th>\u73fe\u5728\u306e\u6c17\u6e29<\/th>\n            <td id=\"wp-temp\">&#8211;<\/td>\n        <\/tr>\n    <\/table>\n<\/div>\n\n<style>\n.wp-geo-container {\n    max-width: 400px;\n    margin: 20px auto;\n    padding: 25px 20px;\n    background: #f8fafc;\n    border: 1px solid #e2e8f0;\n    border-radius: 12px;\n    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);\n    text-align: center;\n    font-family: sans-serif;\n}\n.wp-geo-title {\n    font-size: 18px;\n    font-weight: bold;\n    color: #1e293b;\n    margin-bottom: 15px;\n}\n#wp-geo-btn {\n    background-color: #3b82f6;\n    color: white;\n    border: none;\n    padding: 12px 24px;\n    font-size: 16px;\n    font-weight: bold;\n    border-radius: 8px;\n    cursor: pointer;\n    transition: background 0.2s;\n    width: 100%;\n}\n#wp-geo-btn:hover {\n    background-color: #2563eb;\n}\n#wp-geo-btn:disabled {\n    background-color: #cbd5e1;\n    cursor: not-allowed;\n}\n.wp-status-text {\n    font-size: 13px;\n    color: #64748b;\n    margin: 12px 0;\n    min-height: 20px;\n}\n.wp-geo-table {\n    width: 100%;\n    border-collapse: collapse;\n    margin-top: 15px;\n    text-align: left;\n}\n.wp-geo-table th, .wp-geo-table td {\n    padding: 10px 12px;\n    border-bottom: 1px solid #e2e8f0;\n    font-size: 15px;\n}\n.wp-geo-table th {\n    color: #475569;\n    font-weight: 600;\n    width: 45%;\n}\n.wp-geo-table td {\n    color: #0f172a;\n    font-weight: bold;\n    text-align: right;\n}\n<\/style>\n\n<script>\nfunction getGeoAndWeather() {\n    const status = document.getElementById('wp-geo-status');\n    const btn = document.getElementById('wp-geo-btn');\n    \n    const latTd = document.getElementById('wp-lat');\n    const lngTd = document.getElementById('wp-lng');\n    const pressTd = document.getElementById('wp-pressure');\n    const tempTd = document.getElementById('wp-temp');\n\n    \/\/ \u8868\u793a\u3092\u30ea\u30bb\u30c3\u30c8\n    status.innerText = \"\u4f4d\u7f6e\u60c5\u5831\u3092\u53d6\u5f97\u4e2d...\";\n    status.style.color = \"#64748b\";\n    btn.disabled = true;\n\n    \/\/ \u30d6\u30e9\u30a6\u30b6\u304c\u4f4d\u7f6e\u60c5\u5831\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u304b\u30c1\u30a7\u30c3\u30af\n    if (!navigator.geolocation) {\n        status.innerText = \"\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u306f\u4f4d\u7f6e\u60c5\u5831\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\u3002\";\n        status.style.color = \"#ef4444\";\n        btn.disabled = false;\n        return;\n    }\n\n    \/\/ \u2460 \u4f4d\u7f6e\u60c5\u5831\u306e\u53d6\u5f97\n    navigator.geolocation.getCurrentPosition(\n        (position) => {\n            const lat = position.coords.latitude.toFixed(4); \/\/ \u5c0f\u6570\u70b94\u4f4d\u307e\u3067\u4e38\u3081\u308b\n            const lng = position.coords.longitude.toFixed(4);\n            \n            \/\/ \u753b\u9762\u306b\u4f4d\u7f6e\u60c5\u5831\u3092\u8868\u793a\n            latTd.innerText = lat + \" \u00b0\";\n            lngTd.innerText = lng + \" \u00b0\";\n            \n            status.innerText = \"\u6c17\u8c61\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u4e2d...\";\n\n            \/\/ \u2461 \u6c17\u8c61API\uff08Open-Meteo\uff09\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u6c17\u5727\u3068\u6c17\u6e29\u3092\u53d6\u5f97\n            \/\/ surface_pressure = \u73fe\u5730\u6c17\u5727, temperature_2m = \u5730\u4e0a2m\u306e\u6c17\u6e29\n            const url = `https:\/\/api.open-meteo.com\/v1\/forecast?latitude=${lat}&longitude=${lng}&current=temperature_2m,surface_pressure&timezone=Asia%2FTokyo`;\n\n            fetch(url)\n                .then(response => {\n                    if (!response.ok) throw new Error();\n                    return response.json();\n                })\n                .then(data => {\n                    const currentData = data.current;\n                    \n                    \/\/ \u753b\u9762\u306b\u6c17\u5727\u3068\u6c17\u6e29\u3092\u8868\u793a\n                    pressTd.innerText = currentData.surface_pressure + \" hPa\";\n                    tempTd.innerText = currentData.temperature_2m + \" \u2103\";\n                    \n                    status.innerText = \"\u53d6\u5f97\u5b8c\u4e86\u3057\u307e\u3057\u305f\uff01\";\n                    status.style.color = \"#10b981\";\n                    btn.disabled = false;\n                })\n                .catch(() => {\n                    status.innerText = \"\u5929\u6c17\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\";\n                    status.style.color = \"#ef4444\";\n                    btn.disabled = false;\n                });\n        },\n        (error) => {\n            \/\/ \u4f4d\u7f6e\u60c5\u5831\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u306e\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n            btn.disabled = false;\n            status.style.color = \"#ef4444\";\n            switch(error.code) {\n                case error.PERMISSION_DENIED:\n                    status.innerText = \"\u4f4d\u7f6e\u60c5\u5831\u306e\u5229\u7528\u304c\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\";\n                    break;\n                case error.POSITION_UNAVAILABLE:\n                    status.innerText = \"\u4f4d\u7f6e\u60c5\u5831\u304c\u5224\u5b9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\";\n                    break;\n                case error.TIMEOUT:\n                    status.innerText = \"\u4f4d\u7f6e\u60c5\u5831\u306e\u53d6\u5f97\u304c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\u3002\";\n                    break;\n                default:\n                    status.innerText = \"\u4f4d\u7f6e\u60c5\u5831\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\";\n                    break;\n            }\n        }\n    );\n}\n<\/script>\n\n\n\n<div class=\"era-calculator-container\">\n    <h3>\u751f\u5e74\u6708\u65e5 \u671f\u9593\u8a08\u7b97\u30c4\u30fc\u30eb<\/h3>\n    <div class=\"input-group\">\n        <label for=\"birthdate\">\u751f\u5e74\u6708\u65e5\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/label>\n        <input type=\"date\" id=\"birthdate\" name=\"birthdate\"\/>\n        <button onclick=\"calculateEraPeriods()\">\u8a08\u7b97\u3059\u308b<\/button>\n    <\/div>\n\n    <div id=\"calculator-results\" style=\"display: none;\">\n        <h4>\u3010\u5404\u548c\u66a6\u3067\u904e\u3054\u3057\u305f\u671f\u9593\u3011<\/h4>\n        <ul id=\"era-list\"><\/ul>\n\n        <h4>\u3010\u751f\u307e\u308c\u3066\u304b\u3089\u4eca\u65e5\u307e\u3067\u306e\u30c8\u30fc\u30bf\u30eb\u3011<\/h4>\n        <p id=\"total-result\" class=\"total-highlight\"><\/p>\n    <\/div>\n<\/div>\n\n<style>\n.era-calculator-container {\n    background-color: #f9f9f9;\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    padding: 20px;\n    margin: 20px 0;\n    font-family: sans-serif;\n}\n.era-calculator-container h3, .era-calculator-container h4 {\n    margin-top: 0;\n    color: #333;\n}\n.input-group {\n    margin-bottom: 20px;\n}\n.input-group label {\n    display: block;\n    margin-bottom: 8px;\n    font-weight: bold;\n}\n.input-group input[type=\"date\"] {\n    padding: 8px;\n    font-size: 16px;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n    margin-right: 10px;\n}\n.input-group button {\n    padding: 9px 16px;\n    font-size: 16px;\n    background-color: #0073aa;\n    color: white;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n}\n.input-group button:hover {\n    background-color: #005177;\n}\n#era-list {\n    list-style-type: none;\n    padding-left: 0;\n}\n#era-list li {\n    padding: 6px 0;\n    border-bottom: 1px dashed #eee;\n}\n.total-highlight {\n    font-size: 18px;\n    font-weight: bold;\n    color: #d9534f;\n    background: #fff0f0;\n    padding: 10px;\n    border-radius: 4px;\n    display: inline-block;\n}\n<\/style>\n\n<script>\nfunction calculateEraPeriods() {\n    const birthInput = document.getElementById('birthdate').value;\n    if (!birthInput) {\n        alert('\u751f\u5e74\u6708\u65e5\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002');\n        return;\n    }\n\n    const birthDate = new Date(birthInput);\n    const today = new Date();\n    today.setHours(0,0,0,0); \/\/ \u6642\u9593\u306e\u30ba\u30ec\u3092\u30ea\u30bb\u30c3\u30c8\n\n    if (birthDate > today) {\n        alert('\u672a\u6765\u306e\u8a18\u8ff0\u306f\u8a08\u7b97\u3067\u304d\u307e\u305b\u3093\u3002\u4eca\u65e5\u4ee5\u524d\u306e\u65e5\u4ed8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002');\n        return;\n    }\n\n    \/\/ \u5404\u548c\u66a6\u306e\u5b9a\u7fa9\uff08\u958b\u59cb\u65e5\u3068\u7d42\u4e86\u65e5\uff09\n    const eras = [\n        { name: '\u660e\u6cbb', start: new Date('1868-01-25'), end: new Date('1912-07-30') },\n        { name: '\u5927\u6b63', start: new Date('1912-07-30'), end: new Date('1926-12-25') },\n        { name: '\u662d\u548c', start: new Date('1926-12-25'), end: new Date('1989-01-07') },\n        { name: '\u5e73\u6210', start: new Date('1989-01-08'), end: new Date('2019-04-30') },\n        { name: '\u4ee4\u548c', start: new Date('2019-05-01'), end: today } \/\/ \u4ee4\u548c\u306f\u4eca\u65e5\u307e\u3067\n    ];\n\n    const eraListEl = document.getElementById('era-list');\n    eraListEl.innerHTML = '';\n\n    \/\/ 1. \u5404\u548c\u66a6\u3054\u3068\u306e\u6ede\u5728\u671f\u9593\u8a08\u7b97\n    eras.forEach(era => {\n        \/\/ \u751f\u5e74\u6708\u65e5\u3068\u5143\u53f7\u306e\u4ea4\u5dee\u3059\u308b\u671f\u9593\u3092\u5272\u308a\u51fa\u3059\n        const calcStart = new Date(Math.max(birthDate, era.start));\n        const calcEnd = new Date(Math.min(today, era.end));\n\n        if (calcStart <= calcEnd) {\n            \/\/ \u671f\u9593\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\n            const diff = getDiffYMD(calcStart, calcEnd);\n            \n            \/\/ 1\u65e5\u5206\uff08\u751f\u307e\u308c\u305f\u65e5 or \u5143\u53f7\u304c\u5909\u308f\u3063\u305f\u65e5\uff09\u3092\u88dc\u6b63\u3068\u3057\u3066\u8ffd\u52a0\n            let days = diff.d + 1;\n            let months = diff.m;\n            let years = diff.y;\n\n            \/\/ \u65e5\u6570\u304c\u305d\u306e\u6708\u306e\u6e80\u4e86\u65e5\u3092\u8d85\u3048\u305f\u5834\u5408\u306e\u7e70\u308a\u4e0a\u3052\u51e6\u7406\n            const daysInMonth = new Date(calcEnd.getFullYear(), calcEnd.getMonth() + 1, 0).getDate();\n            if (days >= daysInMonth) {\n                days -= daysInMonth;\n                months++;\n            }\n            if (months >= 12) {\n                months -= 12;\n                years++;\n            }\n\n            \/\/ \u8868\u793a\u30c6\u30ad\u30b9\u30c8\u306e\u4f5c\u6210\n            let periodText = '';\n            if (years > 0) periodText += `${years}\u5e74`;\n            if (months > 0 || years > 0) periodText += `${months}\u30f6\u6708`;\n            periodText += `${days}\u65e5`;\n\n            const li = document.createElement('li');\n            li.innerHTML = `<strong>${era.name}:<\/strong> ${periodText} \u904e\u3054\u3057\u307e\u3057\u305f`;\n            eraListEl.appendChild(li);\n        }\n    });\n\n    \/\/ 2. \u30c8\u30fc\u30bf\u30eb\u671f\u9593\u306e\u8a08\u7b97\uff08\u751f\u307e\u308c\u3066\u304b\u3089\u4eca\u65e5\u307e\u3067\uff09\n    const totalDiff = getDiffYMD(birthDate, today);\n    document.getElementById('total-result').textContent = \n        `${totalDiff.y}\u5e74 ${totalDiff.m}\u30f6\u6708 ${totalDiff.d}\u65e5 \uff08\u30c8\u30fc\u30bf\u30eb\uff09`;\n\n    \/\/ \u7d50\u679c\u3092\u8868\u793a\n    document.getElementById('calculator-results').style.display = 'block';\n}\n\n\/\/ 2\u3064\u306e\u65e5\u4ed8\u306e\u5dee\uff08\u5e74\u30fb\u6708\u30fb\u65e5\uff09\u3092\u6b63\u78ba\u306b\u8a08\u7b97\u3059\u308b\u95a2\u6570\nfunction getDiffYMD(startDate, endDate) {\n    let years = endDate.getFullYear() - startDate.getFullYear();\n    let months = endDate.getMonth() - startDate.getMonth();\n    let days = endDate.getDate() - startDate.getDate();\n\n    if (days < 0) {\n        months--;\n        \/\/ \u524d\u6708\u306e\u672b\u65e5\u3092\u53d6\u5f97\u3057\u3066\u3001\u8db3\u308a\u306a\u3044\u65e5\u6570\u3092\u8db3\u3059\n        const prevMonthEnd = new Date(endDate.getFullYear(), endDate.getMonth(), 0).getDate();\n        days += prevMonthEnd;\n    }\n\n    if (months < 0) {\n        years--;\n        months += 12;\n    }\n\n    return { y: years, m: months, d: days };\n}\n<\/script>\n\n\n\n<div class=\"ip-display-container\">\n    <p>\u3042\u306a\u305f\u306e\u73fe\u5728\u306e\u30b0\u30ed\u30fc\u30d0\u30ebIP\u30a2\u30c9\u30ec\u30b9\u306f\uff1a<\/p>\n    <div id=\"user-ip-address\" class=\"ip-highlight\">\u8aad\u307f\u8fbc\u307f\u4e2d...<\/div>\n<\/div>\n\n<style>\n.ip-display-container {\n    background-color: #f0f8ff;\n    border: 1px solid #b0c4de;\n    border-radius: 8px;\n    padding: 15px;\n    margin: 20px 0;\n    text-align: center;\n    font-family: sans-serif;\n}\n.ip-display-container p {\n    margin: 0 0 10px 0;\n    color: #333;\n    font-weight: bold;\n}\n.ip-highlight {\n    font-size: 24px;\n    font-weight: bold;\n    color: #0073aa;\n    word-break: break-all;\n}\n<\/style>\n\n<script>\n\/\/ \u516c\u958b\u3055\u308c\u3066\u3044\u308bIP\u78ba\u8a8dAPI\u3092\u5229\u7528\u3057\u3066\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u53d6\u5f97\nfetch('https:\/\/api.ipify.org?format=json')\n    .then(response => response.json())\n    .then(data => {\n        document.getElementById('user-ip-address').textContent = data.ip;\n    })\n    .catch(error => {\n        document.getElementById('user-ip-address').textContent = '\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f';\n        console.error('Error:', error);\n    });\n<\/script>\n\n\n\n<div class=\"server-ip-container\" style=\"padding: 10px; font-family: sans-serif;\">\n    <p style=\"margin: 0; font-size: 16px;\">\n        \u5f53\u30b5\u30a4\u30c8\u306e\u30b5\u30fc\u30d0\u30fcIP\u30a2\u30c9\u30ec\u30b9: \n        <strong style=\"color: #13a362;\">[server_ip]<\/strong>\n    <\/p>\n<\/div>\n\n\n\n<div class=\"server-ip-display\" style=\"padding: 15px; background-color: #f6f7f7; border-left: 4px solid #2271b1; font-family: sans-serif; border-radius: 0 4px 4px 0; max-width: 400px;\">\n    <p style=\"margin: 0; font-size: 16px; color: #1d2327;\">\n        \u30b5\u30fc\u30d0\u30fc\u306e\u30b0\u30ed\u30fc\u30d0\u30ebIP\u30a2\u30c9\u30ec\u30b9:<br \/>\n        <strong id=\"dns-resolved-ip\" style=\"font-size: 20px; color: #2271b1; display: inline-block; margin-top: 5px;\">\u78ba\u8a8d\u4e2d...<\/strong>\n    <\/p>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    \/\/ \u73fe\u5728\u306e\u30b5\u30a4\u30c8\u306e\u30c9\u30e1\u30a4\u30f3\u540d\uff08\u30db\u30b9\u30c8\u540d\uff09\u3092\u81ea\u52d5\u53d6\u5f97\n    const domain = window.location.hostname;\n\n    \/\/ Cloudflare\u306eDNS-over-HTTPS API\u3092\u4f7f\u3063\u3066IP\u30a2\u30c9\u30ec\u30b9\uff08A\u30ec\u30b3\u30fc\u30c9\uff09\u3092\u554f\u3044\u5408\u308f\u305b\n    fetch(`https:\/\/cloudflare-dns.com\/dns-query?name=${encodeURIComponent(domain)}&type=A`, {\n        headers: { 'Accept': 'application\/dns-json' }\n    })\n    .then(response => {\n        if (!response.ok) {\n            throw new Error('DNS\u30af\u30a8\u30ea\u306b\u5931\u6557\u3057\u307e\u3057\u305f');\n        }\n        return response.json();\n    })\n    .then(data => {\n        \/\/ DNS\u306e\u5fdc\u7b54\u30c7\u30fc\u30bf\u304b\u3089\u300cIP\u30a2\u30c9\u30ec\u30b9\u300d\u3092\u62bd\u51fa\u3057\u3066\u753b\u9762\u306b\u8868\u793a\n        if (data.Answer && data.Answer.length > 0) {\n            \/\/ \u6700\u521d\u306b\u898b\u3064\u304b\u3063\u305fA\u30ec\u30b3\u30fc\u30c9\uff08IP\u30a2\u30c9\u30ec\u30b9\u306e\u6587\u5b57\u5217\uff09\u3092\u53d6\u5f97\n            const ipAddress = data.Answer[0].data;\n            document.getElementById('dns-resolved-ip').textContent = ipAddress;\n        } else {\n            throw new Error('IP\u30a2\u30c9\u30ec\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093');\n        }\n    })\n    .catch(error => {\n        console.error('IP\u30a2\u30c9\u30ec\u30b9\u306e\u53d6\u5f97\u30a8\u30e9\u30fc:', error);\n        document.getElementById('dns-resolved-ip').textContent = '\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f';\n        document.getElementById('dns-resolved-ip').style.color = '#d63636';\n    });\n});\n<\/script>\n\n\n\n<div class=\"server-ip-display\" style=\"padding: 15px; background-color: #f6f7f7; border-left: 4px solid #2271b1; font-family: sans-serif; border-radius: 0 4px 4px 0; max-width: 400px;\">\n    <p style=\"margin: 0; font-size: 16px; color: #1d2327;\">\n        \u30b5\u30fc\u30d0\u30fc\u306e\u30b0\u30ed\u30fc\u30d0\u30ebIP\u30a2\u30c9\u30ec\u30b9:<br \/>\n        <strong id=\"dns-resolved-ip\" style=\"font-size: 20px; color: #2271b1; display: inline-block; margin-top: 5px;\">\u78ba\u8a8d\u4e2d...<\/strong>\n    <\/p>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    const domain = window.location.hostname;\n\n    fetch(`https:\/\/cloudflare-dns.com\/dns-query?name=${encodeURIComponent(domain)}&type=A`, {\n        headers: { 'Accept': 'application\/dns-json' }\n    })\n    .then(response => {\n        if (!response.ok) throw new Error('DNS\u30af\u30a8\u30ea\u306b\u5931\u6557\u3057\u307e\u3057\u305f');\n        return response.json();\n    })\n    .then(data => {\n        if (data.Answer && data.Answer.length > 0) {\n            \/\/ IP\u30a2\u30c9\u30ec\u30b9\u306e\u6b63\u898f\u8868\u73fe\uff08\u6570\u5b57.\u6570\u5b57.\u6570\u5b57.\u6570\u5b57 \u306e\u5f62\u306b\u4e00\u81f4\u3059\u308b\u3082\u306e\uff09\n            const ipPattern = \/^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$\/;\n            let foundIp = null;\n\n            \/\/ \u8fd4\u3063\u3066\u304d\u305f\u8907\u6570\u306e\u56de\u7b54\u306e\u4e2d\u304b\u3089\u3001\u7d14\u7c8b\u306a\u300c\u6570\u5b57\u306eIP\u30a2\u30c9\u30ec\u30b9\u300d\u3060\u3051\u3092\u63a2\u3059\n            for (let i = 0; i < data.Answer.length; i++) {\n                const itemData = data.Answer[i].data.trim();\n                if (ipPattern.test(itemData)) {\n                    foundIp = itemData;\n                    break; \n                }\n            }\n\n            \/\/ \u6570\u5b57\u306eIP\u30a2\u30c9\u30ec\u30b9\u304c\u898b\u3064\u304b\u308c\u3070\u305d\u308c\u3092\u8868\u793a\u3001\u306a\u3051\u308c\u3070\u6700\u5f8c\u306e\u30c7\u30fc\u30bf\u3092\u8868\u793a\n            if (foundIp) {\n                document.getElementById('dns-resolved-ip').textContent = foundIp;\n            } else {\n                \/\/ \u6587\u5b57\u5217\u306e\u672b\u5c3e\u306e\u30c9\u30c3\u30c8\u3092\u6d88\u3057\u3066\u30ad\u30ec\u30a4\u306b\u3057\u3066\u8868\u793a\uff08\u4fdd\u967a\uff09\n                const cleanData = data.Answer[0].data.replace(\/\\.$\/, '');\n                document.getElementById('dns-resolved-ip').textContent = cleanData;\n            }\n        } else {\n            throw new Error('IP\u30a2\u30c9\u30ec\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093');\n        }\n    })\n    .catch(error => {\n        console.error('IP\u30a2\u30c9\u30ec\u30b9\u306e\u53d6\u5f97\u30a8\u30e9\u30fc:', error);\n        document.getElementById('dns-resolved-ip').textContent = '\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f';\n        document.getElementById('dns-resolved-ip').style.color = '#d63636';\n    });\n});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u521d\u671f\u5024: \u5897\u5206: \u6700\u7d42\u5024: 0 \u30ab\u30a6\u30f3\u30c8\u30a2\u30c3\u30d7\u958b\u59cb \u65e5\u672c\u6a19\u6e96\u6642\uff08JST\uff09 00: &hellip; <a href=\"https:\/\/bbr-1b92faa.ufwpcs.net\/?p=13644\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-13644","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=\/wp\/v2\/posts\/13644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13644"}],"version-history":[{"count":19,"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=\/wp\/v2\/posts\/13644\/revisions"}],"predecessor-version":[{"id":13668,"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=\/wp\/v2\/posts\/13644\/revisions\/13668"}],"wp:attachment":[{"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bbr-1b92faa.ufwpcs.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}