{"id":42,"date":"2025-09-26T12:55:09","date_gmt":"2025-09-26T12:55:09","guid":{"rendered":"https:\/\/soraisall.com\/?page_id=42"},"modified":"2025-09-26T13:25:32","modified_gmt":"2025-09-26T13:25:32","slug":"shslabel","status":"publish","type":"page","link":"https:\/\/soraisall.com\/index.php\/shslabel\/","title":{"rendered":"\u4e0a\u6d77\u4e2d\u5b66\u6807\u8bb0 &#8211; \u9ad8\u5fb7\u7248"},"content":{"rendered":"\n<!-- Community Spots \u2014 AMap (Gaode) Submit + Map + REST Loader (v3.0, China-friendly) -->\n\n<!-- \u6837\u5f0f -->\n<style>\n  :root{\n    --brand:#0D6EFD; --chip:#f1f3f5; --chip-active:#e7f1ff; --text:#1f2937; --muted:#6b7280; --card:#fff; --border:#e5e7eb;\n    --danger:#DC2626; --success:#059669;\n  }\n  .wrap{max-width:1080px;margin:24px auto;padding:0 16px;font:15px\/1.6 -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial;color:var(--text)}\n  .submit-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:16px;box-shadow:0 4px 18px rgba(0,0,0,.05);margin-bottom:14px}\n  .submit-title{font-weight:700;margin-bottom:6px}\n  .submit-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n  .submit-grid .full{grid-column:1\/-1}\n  .submit-grid label{display:block;font-size:12px;color:#6b7280;margin-bottom:4px}\n  .submit-grid input[type=\"text\"], .submit-grid textarea, .submit-grid input[type=\"file\"]{width:100%;padding:10px;border:1px solid var(--border);border-radius:10px;font-size:14px}\n  .submit-actions{display:flex;gap:10px;align-items:center;margin-top:8px}\n  .btn{appearance:none;border:0;border-radius:999px;padding:10px 14px;cursor:pointer;background:var(--brand);color:#fff;font-weight:600}\n  .note{font-size:12px;color:#64748b}.ok{color:var(--success)}.err{color:var(--danger)}\n  @media (max-width:640px){.submit-grid{grid-template-columns:1fr}}\n\n  .header{display:grid;gap:8px;margin:16px 0 12px}\n  .title{font-size:22px;font-weight:700}.desc{color:var(--muted);font-size:14px}\n  .chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 14px}\n  .chip{padding:6px 10px;border-radius:999px;background:var(--chip);border:1px solid var(--border);cursor:pointer;font-size:13px;user-select:none}\n  .chip.active{background:var(--chip-active);border-color:#b6d4fe;color:#0a58ca}\n\n  #amap{height:62vh;min-height:460px;border-radius:14px;border:1px solid var(--border);position:relative;overflow:hidden;background:#f6f7f9}\n  .map-mask{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,.4));pointer-events:none;opacity:0;transition:.2s}\n  .map-mask.show{opacity:1}.spinner{width:32px;height:32px;border-radius:50%;border:3px solid #cbd5e1;border-top-color:#334155;animation:spin 1s linear infinite}\n  @keyframes spin{to{transform:rotate(360deg)}}\n\n  .infowrap{min-width:220px}\n  .infowrap h3{margin:0 0 6px;font-size:16px}\n  .meta{font-size:12px;color:#6b7280;margin-bottom:6px}\n  .tags{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}\n  .tag{font-size:11px;padding:3px 8px;border-radius:999px;background:#eef2ff;color:#3730a3}\n  .actions a{font-size:12px;margin-right:8px;text-decoration:none;color:#0D6EFD}\n  .actions a:hover{text-decoration:underline}\n<\/style>\n\n<div class=\"wrap\">\n  <!-- \u524d\u7aef\u6295\u7a3f\u8868\u5355 -->\n  <div class=\"submit-card\">\n    <div class=\"submit-title\">\u63d0\u4ea4\u4f60\u7684\u70b9\u4f4d<\/div>\n    <div class=\"note\">\u5728\u4e0b\u65b9\u5730\u56fe\u4e0a<strong>\u70b9\u51fb\u4e00\u6b21<\/strong>\u9009\u62e9\u5750\u6807 \u2192 \u586b\u5199\u4fe1\u606f \u2192 \u63d0\u4ea4\uff08\u56fe\u7247 \u2264 3MB\uff09<\/div>\n    <form id=\"spot-form\" enctype=\"multipart\/form-data\">\n      <div class=\"submit-grid\">\n        <div><label>\u6807\u9898\uff08\u5730\u70b9\u540d\uff09*<\/label><input type=\"text\" name=\"title\" required placeholder=\"\u4f8b\u5982\uff1a\u843d\u65e5\u89c2\u666f\u53f0 3\u53f7\u4f4d\"><\/div>\n        <div><label>\u6700\u4f73\u65f6\u95f4<\/label><input type=\"text\" name=\"best_time\" placeholder=\"\u4f8b\u5982\uff1a18:10\u201318:40\"><\/div>\n        <div class=\"full\"><label>\u7b80\u8981\u63cf\u8ff0<\/label><textarea name=\"desc\" rows=\"3\" placeholder=\"\u4f8b\u5982\uff1a\u89c6\u91ce\u5f00\u9614\uff0c\u5e26\u4e09\u811a\u67b6\u66f4\u7a33\u3002\"><\/textarea><\/div>\n        <div><label>\u6807\u7b7e\uff08\u9017\u53f7\u5206\u9694\uff09<\/label><input type=\"text\" name=\"tags\" placeholder=\"\u4f8b\u5982\uff1a\u843d\u65e5,\u62cd\u7167,\u5b89\u9759\"><\/div>\n        <div><label>\u4e0a\u4f20\u56fe\u7247\uff08\u53ef\u9009\uff09<\/label><input type=\"file\" name=\"image\" accept=\".jpg,.jpeg,.png,.webp\"><\/div>\n        <div><label>\u7eac\u5ea6\uff08GCJ-02\uff0c\u81ea\u52a8\u56de\u586b\uff09*<\/label><input type=\"text\" name=\"lat\" id=\"lat\" required readonly placeholder=\"\u70b9\u51fb\u5730\u56fe\u83b7\u53d6\"><\/div>\n        <div><label>\u7ecf\u5ea6\uff08GCJ-02\uff0c\u81ea\u52a8\u56de\u586b\uff09*<\/label><input type=\"text\" name=\"lng\" id=\"lng\" required readonly placeholder=\"\u70b9\u51fb\u5730\u56fe\u83b7\u53d6\"><\/div>\n      <\/div>\n      <div class=\"submit-actions\">\n        <button class=\"btn\" type=\"submit\">\u63d0\u4ea4\u70b9\u4f4d<\/button>\n        <div id=\"submit-msg\" class=\"note\"><\/div>\n      <\/div>\n      <input type=\"hidden\" name=\"action\" value=\"submit_spot\">\n      <input type=\"hidden\" name=\"nonce\" value=\"\">\n      <input type=\"hidden\" name=\"coord_type\" value=\"gcj02\"><!-- \u6807\u6ce8\u65b0\u6570\u636e\u7684\u5750\u6807\u7cfb -->\n    <\/form>\n  <\/div>\n\n  <!-- \u6807\u9898 + \u7b5b\u9009 + \u5730\u56fe -->\n  <header class=\"header\">\n    <div class=\"title\">\u793e\u533a\u7f8e\u666f\u5730\u56fe\uff08\u9ad8\u5fb7\uff09<\/div>\n    <div class=\"desc\">\u6807\u6ce8\u201c\u843d\u65e5\u6700\u7f8e\u201d\u201c\u4eb2\u5b50\u53cb\u597d\u201d\u201c\u591c\u666f\u62cd\u7167\u4f4d\u201d\u7b49\u70b9\u4f4d\u3002\u56fd\u5185\u7f51\u7edc\u66f4\u7a33\uff0c\u652f\u6301\u5bfc\u822a\u3002<\/div>\n    <div id=\"chips\" class=\"chips\">\n      <div class=\"chip active\" data-tag=\"all\">\u5168\u90e8<\/div>\n      <div class=\"chip\" data-tag=\"\u843d\u65e5\">\u843d\u65e5<\/div>\n      <div class=\"chip\" data-tag=\"\u4eb2\u5b50\">\u4eb2\u5b50<\/div>\n      <div class=\"chip\" data-tag=\"\u591c\u666f\">\u591c\u666f<\/div>\n      <div class=\"chip\" data-tag=\"\u5b89\u9759\">\u5b89\u9759<\/div>\n      <div class=\"chip\" data-tag=\"\u62cd\u7167\">\u62cd\u7167<\/div>\n    <\/div>\n  <\/header>\n\n  <div id=\"amap\" aria-label=\"\u793e\u533a\u5730\u56fe\">\n    <div class=\"map-mask\" id=\"map-mask\"><div class=\"spinner\" aria-label=\"\u52a0\u8f7d\u4e2d\"><\/div><\/div>\n  <\/div>\n<\/div>\n\n<!-- \u9ad8\u5fb7 JSAPI v2\uff08\u5c06 YOUR_AMAP_KEY \u66ff\u6362\u4e3a\u4f60\u7684 Key\uff1b\u63a7\u5236\u53f0->\u5e94\u7528->Key \u7ba1\u7406\u91cc\u628a\u57df\u540d\u52a0\u5165\u767d\u540d\u5355\uff09 -->\n<script src=\"https:\/\/webapi.amap.com\/maps?v=2.0&#038;key=cf548322af58313ba4481492d8ce7242\"><\/script>\n\n<script>\n\/* ================== \u5de5\u5177 & \u5168\u5c40 ================== *\/\nconst maskEl = document.getElementById('map-mask');\nconst showMask = () => maskEl?.classList.add('show');\nconst hideMask = () => maskEl?.classList.remove('show');\n\n\/\/ \u539f\u6765\uff1aconst DEFAULT_CENTER_GCJ = [121.44, 31.14];\nconst DEFAULT_CENTER_GCJ = [121.438082, 31.139314]; \/\/ [\u7ecf\u5ea6, \u7eac\u5ea6]\n\n\n\n\/\/ \u5750\u6807\u8f6c\u6362\uff1aWGS84 -> GCJ02\uff08\u7528\u4e8e\u628a\u5386\u53f2 Leaflet\/WGS \u6570\u636e\u8f6c\u4e3a\u9ad8\u5fb7\u53ef\u7528\uff09\nconst PI = Math.PI;\nfunction outOfChina(lng, lat){ return (lng<72.004 || lng>137.8347 || lat<0.8293 || lat>55.8271); }\nfunction transformLat(lng, lat){\n  let ret = -100.0 + 2.0*lng + 3.0*lat + 0.2*lat*lat + 0.1*lng*lat + 0.2*Math.sqrt(Math.abs(lng));\n  ret += (20.0*Math.sin(6.0*lng*PI) + 20.0*Math.sin(2.0*lng*PI))*2.0\/3.0;\n  ret += (20.0*Math.sin(lat*PI) + 40.0*Math.sin(lat\/3.0*PI))*2.0\/3.0;\n  ret += (160.0*Math.sin(lat\/12.0*PI) + 320*Math.sin(lat*PI\/30.0))*2.0\/3.0;\n  return ret;\n}\nfunction transformLng(lng, lat){\n  let ret = 300.0 + lng + 2.0*lat + 0.1*lng*lng + 0.1*lng*lat + 0.1*Math.sqrt(Math.abs(lng));\n  ret += (20.0*Math.sin(6.0*lng*PI) + 20.0*Math.sin(2.0*lng*PI))*2.0\/3.0;\n  ret += (20.0*Math.sin(lng*PI) + 40.0*Math.sin(lng\/3.0*PI))*2.0\/3.0;\n  ret += (150.0*Math.sin(lng\/12.0*PI) + 300.0*Math.sin(lng\/30.0*PI))*2.0\/3.0;\n  return ret;\n}\nfunction wgs84_to_gcj02(lng, lat){\n  if (outOfChina(lng, lat)) return [lng, lat];\n  let dLat = transformLat(lng-105.0, lat-35.0);\n  let dLng = transformLng(lng-105.0, lat-35.0);\n  const radLat = lat\/180.0*PI;\n  let magic = Math.sin(radLat);\n  magic = 1 - 0.00669342162296594323*magic*magic;\n  const sqrtMagic = Math.sqrt(magic);\n  dLat = (dLat*180.0)\/((6335552.717000426*1.0)\/(magic*sqrtMagic)*PI);\n  dLng = (dLng*180.0)\/((6378245.0*1.0)\/sqrtMagic*Math.cos(radLat)*PI);\n  const mgLat = lat + dLat;\n  const mgLng = lng + dLng;\n  return [mgLng, mgLat];\n}\nfunction ensureGCJ(lat, lng, coordType){\n  \/\/ \u8fd4\u56de [lng, lat]\uff08AMap \u4f7f\u7528\u987a\u5e8f\uff09\n  if ((coordType||'').toLowerCase() === 'gcj02') return [lng, lat];\n  \/\/ \u672a\u6807\u6ce8\u5219\u6309 WGS84 \u5904\u7406\n  const [gLng, gLat] = wgs84_to_gcj02(lng, lat);\n  return [gLng, gLat];\n}\n\n\/* ================== \u521d\u59cb\u5316\u5730\u56fe ================== *\/\nconst map = new AMap.Map('amap', { viewMode:'2D', zoom:18, center: DEFAULT_CENTER_GCJ });\nlet infoWin = new AMap.InfoWindow({ offset: new AMap.Pixel(0, -28) });\nconst markers = []; \/\/ \u5b58\u6240\u6709 marker\nfunction setFitViewFiltered(list){\n  if (list.length>0) map.setFitView(list, true, [60,60,60,60], 16);\n  else map.setCenter(DEFAULT_CENTER_GCJ);\n}\n\n\/* ================== \u5f39\u7a97 & \u52a0\u70b9 ================== *\/\nfunction popupHTML(spot){\n  const lng = spot.lng, lat = spot.lat;\n  const amapDeepLink = `https:\/\/uri.amap.com\/marker?position=${lng},${lat}&name=${encodeURIComponent(spot.title||'\u76ee\u7684\u5730')}`;\n  const gmaps = `https:\/\/maps.google.com\/?q=${lat},${lng}`;\n  return `\n    <div class=\"infowrap\">\n      <h3>${spot.title||'\u672a\u547d\u540d\u5730\u70b9'}<\/h3>\n      ${spot.bestTime ? `<div class=\"meta\">\u6700\u4f73\u65f6\u95f4\uff1a${spot.bestTime}<\/div>` : ``}\n      ${spot.tips ? `<div class=\"meta\">\u5c0f\u8d34\u58eb\uff1a${spot.tips}<\/div>` : ``}\n      ${\n        Array.isArray(spot.tags)&&spot.tags.length\n        ? `<div class=\"tags\">${spot.tags.map(t=>`<span class=\"tag\">${t}<\/span>`).join('')}<\/div>`\n        : ``\n      }\n      <div class=\"actions\">\n        <a href=\"${amapDeepLink}\" target=\"_blank\" rel=\"noopener\">\u9ad8\u5fb7\u5bfc\u822a<\/a>\n        <a href=\"${gmaps}\" target=\"_blank\" rel=\"noopener\">Google<\/a>\n      <\/div>\n    <\/div>\n  `;\n}\n\nfunction addSpot(spot){\n  \/\/ spot: {title, lat, lng, bestTime, tips, tags, coordType?}\n  const [glng, glat] = ensureGCJ(spot.lat, spot.lng, spot.coordType);\n  const marker = new AMap.Marker({ position: [glng, glat], anchor:'bottom-center' });\n  marker._spot = { ...spot, lat: glat, lng: glng }; \/\/ \u5b58\u4e3a GCJ02\n  marker.on('click', ()=>{ infoWin.setContent(popupHTML(marker._spot)); infoWin.open(map, marker.getPosition()); });\n  map.add(marker);\n  markers.push(marker);\n  return marker;\n}\n\n\/* ================== \u6807\u7b7e\u7b5b\u9009 ================== *\/\nconst chipBar = document.getElementById('chips');\nfunction getActiveTags(){\n  return [...chipBar.querySelectorAll('.chip.active')].map(c=>c.dataset.tag).filter(t=>t && t!=='all');\n}\nfunction applyFilter(){\n  const actives = getActiveTags();\n  const showAll = actives.length===0;\n  const visible = [];\n  markers.forEach(m=>{\n    const tags = (m._spot.tags||[]);\n    const match = showAll ? true : actives.every(t => tags.includes(t));\n    m.setMap(match ? map : null);\n    if (match) visible.push(m);\n  });\n  setFitViewFiltered(visible);\n}\nchipBar.addEventListener('click', e=>{\n  const chip = e.target.closest('.chip'); if (!chip) return;\n  const tag = chip.dataset.tag;\n  if (tag==='all'){ chipBar.querySelectorAll('.chip').forEach(c=>c.classList.remove('active')); chip.classList.add('active'); }\n  else { chip.classList.toggle('active'); chipBar.querySelector('.chip[data-tag=\"all\"]').classList.remove('active');\n         if (getActiveTags().length===0) chipBar.querySelector('.chip[data-tag=\"all\"]').classList.add('active'); }\n  applyFilter();\n});\n\n\/* ================== \u70b9\u51fb\u53d6\u5750\u6807 + \u63d0\u4ea4 ================== *\/\n(function initForm(){\n  \/\/ \u6ce8\u5165 nonce\uff08\u6765\u81ea\u540e\u7aef wp_localize_script\uff09\n  try { document.querySelector('#spot-form input[name=\"nonce\"]').value = COMMUNITY_SPOTS.nonce; } catch(e){}\n\n  \/\/ \u9ed8\u8ba4\u56de\u586b\u4e2d\u5fc3\u70b9\uff08GCJ-02\uff09\ndocument.getElementById('lat').value = DEFAULT_CENTER_GCJ[1].toFixed(6); \/\/ 31.139314\ndocument.getElementById('lng').value = DEFAULT_CENTER_GCJ[0].toFixed(6); \/\/ 121.438082\n\n\n  \/\/ \u70b9\u51fb\u5730\u56fe\u653e\u7f6e\/\u79fb\u52a8\u300c\u9884\u89c8\u70b9\u300d\n  let previewMarker = new AMap.Marker({ position: DEFAULT_CENTER_GCJ, anchor:'bottom-center' });\n  map.add(previewMarker);\n  map.on('click', e=>{\n    const lng = e.lnglat.lng, lat = e.lnglat.lat;\n    previewMarker.setPosition([lng, lat]);\n    document.getElementById('lat').value = lat.toFixed(6);\n    document.getElementById('lng').value = lng.toFixed(6);\n  });\n\n  const formEl = document.getElementById('spot-form');\n  const msgEl  = document.getElementById('submit-msg');\n  formEl.addEventListener('submit', async (ev)=>{\n    ev.preventDefault();\n    msgEl.className='note'; msgEl.textContent='\u63d0\u4ea4\u4e2d\u2026';\n\n    \/\/ \u56fe\u7247\u6821\u9a8c\n    const file = formEl.image.files[0];\n    if (file){\n      const ok = ['image\/jpeg','image\/png','image\/webp'].includes(file.type);\n      if (!ok){ msgEl.className='note err'; msgEl.textContent='\u4ec5\u652f\u6301 JPG\/PNG\/WebP \u683c\u5f0f'; return; }\n      if (file.size > 3*1024*1024){ msgEl.className='note err'; msgEl.textContent='\u56fe\u7247\u592a\u5927\uff08>3MB\uff09'; return; }\n    }\n    if (!window.COMMUNITY_SPOTS){ msgEl.className='note err'; msgEl.textContent='\u672a\u6ce8\u5165 nonce\uff0c\u8bf7\u786e\u8ba4\u5df2\u5b89\u88c5\u540e\u7aef\u4ee3\u7801'; return; }\n\n    const fd = new FormData(formEl);\n    try{\n      const res = await fetch(COMMUNITY_SPOTS.ajax_url, { method:'POST', body: fd });\n      const json = await res.json();\n      if (!json.success) throw new Error(json?.data?.message || '\u63d0\u4ea4\u5931\u8d25');\n\n      const d = json.data;\n      const spot = { title:d.title, lat:d.lat, lng:d.lng, bestTime:d.best_time||'', tips:d.tips||'', tags:d.tags||[], coordType:'gcj02' };\n      addSpot(spot); applyFilter();\n\n      formEl.reset();\n      document.getElementById('lat').value=''; document.getElementById('lng').value='';\n      msgEl.className='note ok'; msgEl.textContent='\u63d0\u4ea4\u6210\u529f\uff01\u5df2\u8fdb\u5165\u5f85\u5ba1\u6838\uff0c\u5ba1\u6838\u901a\u8fc7\u540e\u5c06\u5411\u6240\u6709\u8bbf\u5ba2\u516c\u5f00\u663e\u793a\u3002';\n    }catch(err){\n      msgEl.className='note err'; msgEl.textContent='\u63d0\u4ea4\u5931\u8d25\uff1a'+err.message;\n    }\n  });\n})();\n\n\/* ================== REST \u62c9\u53d6\uff08\u81ea\u52a8\u8bc6\u522b \/wp-json \u6216 \/index.php\/wp-json\uff09 ================== *\/\nconst PER_PAGE = 100;\nlet REST_PREFIX = null;\nasync function detectRestPrefix(){\n  const origin = window.location.origin;\n  const cands = [`${origin}\/wp-json`, `${origin}\/index.php\/wp-json`];\n  for (const base of cands){\n    try{ const r = await fetch(`${base}\/wp\/v2\/types`, {credentials:'same-origin'}); if (r.ok) return base; }catch(e){}\n  }\n  throw new Error('REST API \u4e0d\u53ef\u8fbe');\n}\nasync function fetchSpotsPage(page=1){\n  if (!REST_PREFIX) REST_PREFIX = await detectRestPrefix();\n  const url = `${REST_PREFIX}\/wp\/v2\/spot?status=publish&per_page=${PER_PAGE}&page=${page}&_fields=id,title,meta`;\n  const res = await fetch(url, { credentials:'same-origin' });\n  if (!res.ok){ const t = await res.text(); console.warn('REST \u9519\u8bef\uff1a', res.status, t); throw new Error('REST \u5931\u8d25'); }\n  const totalPages = parseInt(res.headers.get('X-WP-TotalPages') || '1', 10);\n  const data = await res.json();\n  return { data, totalPages };\n}\nfunction normalizeSpot(item){\n  const meta = item.meta || {};\n  const lat = parseFloat(meta.lat), lng = parseFloat(meta.lng);\n  if (Number.isNaN(lat) || Number.isNaN(lng)) return null;\n  const tags = Array.isArray(meta.tags) ? meta.tags : [];\n  const best_time = meta.best_time || '', tips = meta.tips || '';\n  const coordType = (meta.coord_type || '').toLowerCase(); \/\/ \u82e5\u65e0\uff0c\u6309 wgs84 \u5904\u7406\n  return { title: (item.title?.rendered)||'\u672a\u547d\u540d\u5730\u70b9', lat, lng, bestTime:best_time, tips, tags, coordType };\n}\nasync function loadAllPublishedSpots(){\n  showMask();\n  try{\n    let page=1, total=1; const list=[];\n    do{\n      const {data, totalPages} = await fetchSpotsPage(page);\n      total = totalPages;\n      data.forEach(it=>{ const s = normalizeSpot(it); if (s) list.push(s); });\n      page++;\n    }while(page<=total);\n\n    if (list.length===0){\n      map.setCenter(DEFAULT_CENTER_GCJ);\n    }else{\n      const visible=[];\n      list.forEach(s=>{ const m = addSpot(s); if (m.getMap()) visible.push(m); });\n      setFitViewFiltered(visible);\n    }\n    applyFilter();\n  }finally{ hideMask(); }\n}\ndocument.addEventListener('DOMContentLoaded', loadAllPublishedSpots);\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u63d0\u4ea4\u4f60\u7684\u70b9\u4f4d \u5728\u4e0b\u65b9\u5730\u56fe\u4e0a\u70b9\u51fb\u4e00\u6b21\u9009\u62e9\u5750\u6807 \u2192 \u586b\u5199\u4fe1\u606f \u2192 \u63d0\u4ea4\uff08\u56fe\u7247 \u2264 3MB\uff09 \u6807\u9898\uff08\u5730\u70b9\u540d\uff09* \u6700\u4f73\u65f6\u95f4 \u7b80\u8981\u63cf\u8ff0 \u6807\u7b7e\uff08\u9017\u53f7\u5206\u9694\uff09 \u4e0a\u4f20\u56fe\u7247\uff08\u53ef\u9009\uff09 \u7eac\u5ea6\uff08GCJ-02\uff0c\u81ea\u52a8\u56de\u586b\uff09* \u7ecf\u5ea6\uff08GCJ-02\uff0c\u81ea\u52a8\u56de\u586b\uff09* \u63d0\u4ea4\u70b9\u4f4d \u793e\u533a\u7f8e\u666f\u5730\u56fe\uff08\u9ad8\u5fb7\uff09 \u6807\u6ce8\u201c\u843d\u65e5\u6700\u7f8e\u201d\u201c\u4eb2\u5b50\u53cb\u597d\u201d\u201c\u591c\u666f\u62cd\u7167\u4f4d\u201d\u7b49\u70b9\u4f4d\u3002\u56fd\u5185\u7f51\u7edc\u66f4\u7a33\uff0c\u652f\u6301\u5bfc\u822a\u3002 \u5168\u90e8 \u843d\u65e5 \u4eb2\u5b50 \u591c\u666f \u5b89\u9759 \u62cd\u7167<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-42","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/soraisall.com\/index.php\/wp-json\/wp\/v2\/pages\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soraisall.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/soraisall.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/soraisall.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soraisall.com\/index.php\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":9,"href":"https:\/\/soraisall.com\/index.php\/wp-json\/wp\/v2\/pages\/42\/revisions"}],"predecessor-version":[{"id":59,"href":"https:\/\/soraisall.com\/index.php\/wp-json\/wp\/v2\/pages\/42\/revisions\/59"}],"wp:attachment":[{"href":"https:\/\/soraisall.com\/index.php\/wp-json\/wp\/v2\/media?parent=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}