{"id":38684,"date":"2026-06-26T10:40:24","date_gmt":"2026-06-26T02:40:24","guid":{"rendered":"https:\/\/eshop.lungfung.hk\/member-login\/"},"modified":"2026-06-26T10:40:24","modified_gmt":"2026-06-26T02:40:24","slug":"member-login","status":"publish","type":"page","link":"https:\/\/eshop.lungfung.hk\/en\/member-login\/","title":{"rendered":"\u6703\u54e1\u767b\u5165"},"content":{"rendered":"\t<div class=\"lf-member-wrap\">\n\t\t<div class=\"lf-member-card\">\n\t\t\t<h2>Member Login<\/h2>\n\t\t\t\t\t\t<p><a class=\"lf-member-google\" href=\"https:\/\/eshop.lungfung.hk\/en\/member-login\/?lf_google_action=start&#038;context=login&#038;lf_google_nonce=916b02cb63\" data-lf-member-href-token=\"aHR0cHM6Ly9lc2hvcC5sdW5nZnVuZy5oay9lbi9tZW1iZXItbG9naW4vP2xmX2dvb2dsZV9hY3Rpb249c3RhcnQmIzAzODtjb250ZXh0PWxvZ2luJiMwMzg7bGZfZ29vZ2xlX25vbmNlPTkxNmIwMmNiNjM%3D\"><span class=\"lf-member-google-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 48 48\" role=\"img\" focusable=\"false\" aria-hidden=\"true\"><path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"\/><path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"\/><path fill=\"#FBBC05\" d=\"M10.53 28.59A14.39 14.39 0 0 1 9.75 24c0-1.59.28-3.13.78-4.59l-7.98-6.19A23.86 23.86 0 0 0 0 24c0 3.87.92 7.53 2.56 10.78l7.97-6.19z\"\/><path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"\/><path fill=\"none\" d=\"M0 0h48v48H0z\"\/><\/svg><\/span><span>Continue with Google<\/span><\/a><\/p>\t\t\t<form class=\"lf-member-form\" method=\"post\" action=\"https:\/\/eshop.lungfung.hk\/en\/member-login\/\">\n\t\t\t\t<input type=\"hidden\" id=\"lf_member_nonce\" name=\"lf_member_nonce\" value=\"fd6d157b63\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/38684\" \/>\t\t\t\t<input type=\"hidden\" name=\"lf_member_action\" value=\"login\" \/>\n\t\t\t\t<label>\n\t\t\t\t\t<span>Member ID or email<\/span>\n\t\t\t\t\t<input type=\"text\" name=\"identifier\" autocomplete=\"username\" required \/>\n\t\t\t\t<\/label>\n\t\t\t\t<label>\n\t\t\t\t\t<span>Password<\/span>\n\t\t\t\t\t<input type=\"password\" name=\"password\" autocomplete=\"current-password\" required \/>\n\t\t\t\t<\/label>\n\t\t\t\t<label class=\"lf-member-remember\">\n\t\t\t\t\t<span>Keep me signed in<\/span>\n\t\t\t\t\t<input type=\"checkbox\" name=\"remember\" value=\"1\" \/>\n\t\t\t\t<\/label>\n\t\t\t\t\t\t<script>\n\t\t(function(){\n\t\t\tif (window.lfMembershipTurnstileSetup) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twindow.lfMembershipTurnstileSetup = true;\n\t\t\tvar cooldownKey = 'lf_member_register_submit_cooldown_until';\n\n\t\t\tfunction submitButton(form) {\n\t\t\t\treturn form ? form.querySelector('button[type=\"submit\"][data-lf-turnstile-submit], input[type=\"submit\"][data-lf-turnstile-submit]') : null;\n\t\t\t}\n\n\t\t\tfunction hasTurnstile(form) {\n\t\t\t\treturn !!(form && form.querySelector('.cf-turnstile'));\n\t\t\t}\n\n\t\t\tfunction turnstileReady(form) {\n\t\t\t\tvar response = form ? form.querySelector('[name=\"cf-turnstile-response\"]') : null;\n\t\t\t\treturn !!(response && response.value);\n\t\t\t}\n\n\t\t\tfunction cooldownRemaining(button) {\n\t\t\t\tif (!button || !button.hasAttribute('data-lf-register-submit')) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tvar until = parseInt(window.localStorage.getItem(cooldownKey) || '0', 10);\n\t\t\t\treturn Math.max(0, Math.ceil((until - Date.now()) \/ 1000));\n\t\t\t}\n\n\t\t\tfunction updateButton(form) {\n\t\t\t\tvar button = submitButton(form);\n\t\t\t\tif (!button) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar defaultLabel = button.getAttribute('data-lf-default-label') || button.textContent;\n\t\t\t\tvar remaining = cooldownRemaining(button);\n\t\t\t\tif (remaining > 0) {\n\t\t\t\t\tbutton.disabled = true;\n\t\t\t\t\tbutton.textContent = \"Please wait \" + remaining + \" seconds\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tbutton.textContent = defaultLabel;\n\t\t\t\tbutton.disabled = hasTurnstile(form) && !turnstileReady(form);\n\t\t\t}\n\n\t\t\tfunction refreshForms() {\n\t\t\t\tdocument.querySelectorAll('form.lf-member-form').forEach(updateButton);\n\t\t\t}\n\n\t\t\tfunction requiredLabel(field) {\n\t\t\t\tvar label = field.closest('label');\n\t\t\t\tif (!label) {\n\t\t\t\t\treturn \"Required field\";\n\t\t\t\t}\n\t\t\t\tvar text = (label.querySelector('span') || label).textContent || \"Required field\";\n\t\t\t\treturn text.replace('*', '').trim();\n\t\t\t}\n\n\t\t\tfunction showRequiredError(form, field) {\n\t\t\t\tvar box = form.querySelector('[data-lf-form-error]');\n\t\t\t\tif (box) {\n\t\t\t\t\tbox.textContent = \"Please complete required field: \" + requiredLabel(field);\n\t\t\t\t\tbox.classList.add('is-visible');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.lf-member-invalid').forEach(function(label){\n\t\t\t\t\tlabel.classList.remove('lf-member-invalid');\n\t\t\t\t});\n\t\t\t\tvar label = field.closest('label');\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel.classList.add('lf-member-invalid');\n\t\t\t\t}\n\t\t\t\tfield.scrollIntoView({ behavior: 'smooth', block: 'center' });\n\t\t\t\twindow.setTimeout(function(){ field.focus({ preventScroll: true }); }, 250);\n\t\t\t}\n\n\t\t\tfunction validateRequired(form) {\n\t\t\t\tvar required = Array.prototype.slice.call(form.querySelectorAll('[required]'));\n\t\t\t\tfor (var i = 0; i < required.length; i++) {\n\t\t\t\t\tvar field = required[i];\n\t\t\t\t\tif (field.disabled) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif ((field.type === 'checkbox' || field.type === 'radio') ? !field.checked : !String(field.value || '').trim()) {\n\t\t\t\t\t\tshowRequiredError(form, field);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar box = form.querySelector('[data-lf-form-error]');\n\t\t\t\tif (box) {\n\t\t\t\t\tbox.classList.remove('is-visible');\n\t\t\t\t\tbox.textContent = '';\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.lf-member-invalid').forEach(function(label){\n\t\t\t\t\tlabel.classList.remove('lf-member-invalid');\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\twindow.lfMembershipTurnstileSuccess = function() {\n\t\t\t\twindow.setTimeout(refreshForms, 50);\n\t\t\t};\n\t\t\twindow.lfMembershipTurnstileReset = function() {\n\t\t\t\twindow.setTimeout(refreshForms, 50);\n\t\t\t};\n\n\t\t\tdocument.addEventListener('submit', function(event) {\n\t\t\t\tvar form = event.target;\n\t\t\t\tif (!form || !form.classList || !form.classList.contains('lf-member-form')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!validateRequired(form)) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (hasTurnstile(form) && !turnstileReady(form)) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateButton(form);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar button = submitButton(form);\n\t\t\t\tif (button && button.hasAttribute('data-lf-register-submit')) {\n\t\t\t\t\twindow.localStorage.setItem(cooldownKey, String(Date.now() + 60000));\n\t\t\t\t\tupdateButton(form);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdocument.addEventListener('invalid', function(event) {\n\t\t\t\tvar field = event.target;\n\t\t\t\tvar form = field && field.form;\n\t\t\t\tif (!form || !form.classList || !form.classList.contains('lf-member-form')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tshowRequiredError(form, field);\n\t\t\t}, true);\n\n\t\t\tdocument.addEventListener('DOMContentLoaded', refreshForms);\n\t\t\twindow.setInterval(refreshForms, 1000);\n\t\t})();\n\t\t<\/script>\n\t\t<div class=\"cf-turnstile\" data-sitekey=\"0x4AAAAAADqAom9XB5Dm8cjz\" data-callback=\"lfMembershipTurnstileSuccess\" data-expired-callback=\"lfMembershipTurnstileReset\" data-error-callback=\"lfMembershipTurnstileReset\"><\/div>\t\t\t\t<div class=\"lf-member-actions\">\n\t\t\t\t\t<button type=\"submit\" class=\"button\" disabled=\"disabled\" data-lf-turnstile-submit=\"1\">Log in<\/button>\n\t\t\t\t\t<a href=\"https:\/\/eshop.lungfung.hk\/en\/member-register\/\" data-lf-member-href-token=\"aHR0cHM6Ly9lc2hvcC5sdW5nZnVuZy5oay9lbi9tZW1iZXItcmVnaXN0ZXIv\">No account? Register now<\/a>\n\t\t\t\t<\/div>\n\t\t\t<\/form>\n\t\t<\/div>\n\t<\/div>\n\t\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-38684","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/eshop.lungfung.hk\/en\/wp-json\/wp\/v2\/pages\/38684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eshop.lungfung.hk\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eshop.lungfung.hk\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eshop.lungfung.hk\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/eshop.lungfung.hk\/en\/wp-json\/wp\/v2\/comments?post=38684"}],"version-history":[{"count":0,"href":"https:\/\/eshop.lungfung.hk\/en\/wp-json\/wp\/v2\/pages\/38684\/revisions"}],"wp:attachment":[{"href":"https:\/\/eshop.lungfung.hk\/en\/wp-json\/wp\/v2\/media?parent=38684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}