WordPress ਦੀ ਇਨ-ਬਿਲਟ ਐਡਮਿਨ-ਈਮੇਲ ਵੈਰੀਫਿਕੇਸ਼ਨ ਸਕ੍ਰੀਨ—ਜੋ ਵਰਜ਼ਨ 5.3 ਤੋਂ ਹਰ ਕੁਝ ਮਹੀਨਿਆਂ ਬਾਅਦ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ—ਉਨ੍ਹਾਂ Playwright automation ਨੂੰ ਰੋਕ ਦਿੰਦੀ ਹੈ ਜੋ SSH access ਤੋਂ ਬਿਨਾਂ ਵੈੱਬਸਾਈਟਾਂ 'ਤੇ ਪਲੱਗਇਨ ਅਪਡੇਟ ਕਰਦੇ ਹਨ। ਇਹ ਵਾਧੂ ਕਦਮ ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ ਅਜਿਹੇ ਬਟਨ ਦੀ ਉਡੀਕ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਦਾ ਹੈ ਜੋ ਕਦੇ ਦਿਖਾਈ ਹੀ ਨਹੀਂ ਦਿੰਦਾ, ਜਿਸ ਨਾਲ timeouts ਹੋ ਜਾਂਦੇ ਹਨ ਅਤੇ ਡਿਪਲਾਈਮੈਂਟ (deployments) ਰੁਕ ਜਾਂਦੀਆਂ ਹਨ।
ਰੁਕਾਵਟ ਦਾ ਕਾਰਨ ਕੀ ਹੈ
ਜਦੋਂ ਇੱਕ Playwright ਸਕ੍ਰਿਪਟ wp-admin ਵਿੱਚ ਲੌਗਇਨ ਕਰਦੀ ਹੈ, ਤਾਂ ਇਹ ਉਮੀਦ ਕਰਦੀ ਹੈ ਕਿ ਡੈਸ਼ਬੋਰਡ ਤੁਰੰਤ ਲੋਡ ਹੋ ਜਾਵੇਗਾ। ਇਸ ਦੀ ਬਜਾਏ, WordPress ਕਦੇ-ਕਦੇ ਅਜਿਹੇ ਪੇਜ 'ਤੇ ਰੀਡਾਇਰੈਕਟ (redirect) ਕਰ ਦਿੰਦਾ ਹੈ ਜਿਸਦੇ URL ਵਿੱਚ adminhash= ਹੁੰਦਾ ਹੈ। ਪੇਜ ਪੁੱਛਦਾ ਹੈ, “Is this still your address?” ਅਤੇ ਇਸ ਵਿੱਚ ਦੋ ਬਟਨ ਹੁੰਦੇ ਹਨ: Yes, this is my address ਅਤੇ I’ll wait। ਇੱਕ ਇਨਸਾਨ “I’ll wait” 'ਤੇ ਕਲਿੱਕ ਕਰਦਾ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਅੱਗੇ ਵਧਦਾ ਹੈ; ਪਰ ਇੱਕ ਅਣਡਿੱਠੀ (unattended) ਸਕ੍ਰਿਪਟ ਡੈਸ਼ਬੋਰਡ ਦੇ ਐਲੀਮੈਂਟਸ (elements) ਨੂੰ ਲੱਭਦੀ ਰਹਿੰਦੀ ਹੈ, ਉਹਨਾਂ ਨੂੰ ਕਦੇ ਲੱਭ ਨਹੀਂ ਪਾਉਂਦੀ, ਅਤੇ ਅੰਤ ਵਿੱਚ timeout ਹੋ ਜਾਂਦੀ ਹੈ।
ਇਹ ਪ੍ਰੋਂਪਟ ਕਿਉਂ ਮੌਜੂਦ ਹੈ
WordPress ਨੇ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਇਹ ਪ੍ਰੋਂਪਟ ਜੋੜਿਆ ਹੈ ਕਿ ਐਡਮਿਨ ਈਮੇਲ ਪਤਾ ਅਜੇ ਵੀ ਪਹੁੰਚਯੋਗ (reachable) ਹੈ। ਇਹ ਸਾਈਟ ਦੀ ਗਤੀਵਿਧੀ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ, ਲਗਭਗ ਹਰ ਕੁਝ ਮਹੀਨਿਆਂ ਬਾਅਦ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਇਸਦਾ ਉਦੇਸ਼ ਉਹਨਾਂ ਸਾਈਟ ਮਾਲਕਾਂ ਲਈ ਸੁਰੱਖਿਆ ਜਾਂਚ ਵਜੋਂ ਹੈ ਜਿਨ੍ਹਾਂ ਨੇ ਸ਼ਾਇਦ ਉਸ ਪਤੇ ਤੱਕ ਪਹੁੰਚ ਗੁਆ ਦਿੱਤੀ ਹੋਵੇ।
ਕੌਣ ਪ੍ਰਭਾਵਿਤ ਹੁੰਦਾ ਹੈ
- Developers ਜੋ ਪਲੱਗਇਨ ਅਪਡੇਟ ਕਰਨ, UI ਟੈਸਟ ਚਲਾਉਣ, ਜਾਂ ਬਲਕ ਐਡਮਿਨ ਕੰਮ ਕਰਨ ਲਈ Playwright 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹਨ।
- Hosting providers ਜੋ SSH 'ਤੇ ਪਾਬੰਦੀ ਲਗਾਉਂਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਰਾਹੀਂ ਆਟੋਮੇਸ਼ਨ ਕਰਨ ਲਈ ਮਜਬੂਰ ਹੋਣਾ ਪੈਂਦਾ ਹੈ।
- Site owners ਜਿਨ੍ਹਾਂ ਨੂੰ ਅਪਡੇਟਾਂ ਵਿੱਚ ਦੇਰੀ ਦੇਖਣ ਨੂੰ ਮਿਲਦੀ ਹੈ ਕਿਉਂਕਿ ਆਟੋਮੇਸ਼ਨ ਕਦੇ ਵੀ ਅਪਡੇਟ ਸਕ੍ਰੀਨ ਤੱਕ ਨਹੀਂ ਪਹੁੰਚ ਪਾਉਂਦੀ।
ਇਸਦੀ ਕੀਮਤ ਸਿਰਫ਼ ਕੁਝ ਗਵਾਏ ਹੋਏ ਸੈਕਿੰਡ ਨਹੀਂ ਹਨ; ਵਾਰ-ਵਾਰ ਹੋਣ ਵਾਲੀਆਂ ਅਸਫਲਤਾਵਾਂ ਨਿਰਧਾਰਤ ਮੇਨਟੇਨੈਂਸ ਵਿੰਡੋਜ਼ (maintenance windows) ਨੂੰ ਰੋਕ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਮੈਨੂਅਲ ਦਖਲਅੰਦਾਜ਼ੀ (manual intervention) ਲਈ ਮਜਬੂਰ ਕਰ ਸਕਦੀਆਂ ਹਨ।
ਅਣਚਾਹੀ ਸਕ੍ਰੀਨ ਦਾ ਪਤਾ ਲਗਾਉਣਾ
ਮੌਜੂਦਾ URL ਵਿੱਚ adminhash= ਦੀ ਮੌਜੂਦਗੀ ਇੱਕ ਭਰੋਸੇਯੋਗ ਸੰਕੇਤ ਹੈ। ਇਹ ਸਟ੍ਰਿੰਗ (string) ਸਿਰਫ਼ ਈਮੇਲ-ਵੈਰੀਫਿਕੇਸ਼ਨ ਪੇਜ 'ਤੇ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ, ਨਾ ਕਿ ਆਮ ਡੈਸ਼ਬੋਰਡ ਜਾਂ ਕਿਸੇ ਹੋਰ ਐਡਮਿਨ ਸਕ੍ਰੀਨ 'ਤੇ।
ਇੱਕ ਸਧਾਰਨ ਬਾਈਪਾਸ
ਲੌਗਇਨ ਕਦਮ ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ ਇੱਕ ਚੈੱਕ (check) ਸ਼ਾਮਲ ਕਰੋ। ਜੇਕਰ URL ਵਿੱਚ adminhash= ਹੈ, ਤਾਂ “I’ll wait” ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਅਤੇ ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ ਪੇਜ ਦੇ ਸੈਟਲ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰੋ।
def ensure_past_email_check(page):
if "adminhash=" in page.url:
page.click("text=I'll wait")
page.wait_for_load_state("networkidle")
ਹਰ ਸਫਲ ਲੌਗਇਨ ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ ensure_past_email_check(page) ਨੂੰ ਕਾਲ ਕਰੋ। ਜਦੋਂ ਵੈਰੀਫਿਕੇਸ਼ਨ ਸਕ੍ਰੀਨ ਨਹੀਂ ਦਿਖਾਈ ਦਿੰਦੀ ਤਾਂ ਇਹ ਫੰਕਸ਼ਨ ਕੁਝ ਨਹੀਂ ਕਰਦਾ, ਜਿਸ ਨਾਲ ਸਕ੍ਰਿਪਟ ਤੇਜ਼ ਅਤੇ ਨਿਰਧਾਰਤ (deterministic) ਰਹਿੰਦੀ ਹੈ।
ਬਾਈਪਾਸ ਦੀ ਵਰਤੋਂ ਕਦੋਂ ਕਰਨੀ ਹੈ
ਉਹਨਾਂ ਆਟੋਮੇਟਡ ਵਰਕਫਲੋਜ਼ (automated workflows) ਲਈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਮਨੁੱਖੀ ਨਿਗਰਾਨੀ ਤੋਂ ਬਿਨਾਂ ਚੱਲਣਾ ਚਾਹੀਦਾ ਹੈ—ਜਿਵੇਂ ਕਿ ਰਾਤ ਦੇ ਸਮੇਂ ਪਲੱਗਇਨ ਅਪਡੇਟ ਜਾਂ continuous-integration UI ਟੈਸਟ—ਬਾਈਪਾਸ ਵਿਹਾਰਕ ਹੈ। ਇਹ ਵੈਰੀਫਿਕੇਸ਼ਨ ਕਦਮ ਨੂੰ ਇੱਕ ਅਚਾਨਕ ਅਸਫਲਤਾ ਦੀ ਬਜਾਏ ਇੱਕ ਅਨੁਮਾਨਿਤ ਮੋੜ (predictable detour) ਵਜੋਂ ਮੰਨਦਾ ਹੈ।
ਵਿਰੋਧੀ ਪੱਖ
ਕੁਝ ਐਡਮਿਨਿਸਟ੍ਰੇਟਰਾਂ ਦਾ ਤਰਕ ਹੈ ਕਿ ਪ੍ਰੋਂਪਟ ਨੂੰ ਆਪਣੇ ਆਪ ਰੱਦ ਕਰਨਾ ਅਸਲ ਈਮੇਲ-ਡਿਲਿਵਰੀ ਦੀ ਸਮੱਸਿਆ ਨੂੰ ਛੁਪਾ ਸਕਦਾ ਹੈ। ਜੇਕਰ ਐਡਮਿਨ ਈਮੇਲ ਸੱਚਮੁੱਚ ਪਹੁੰਚ ਤੋਂ ਬਾਹਰ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਸਾਈਟ ਮਹੱਤਵਪੂਰਨ ਨੋਟੀਫਿਕੇਸ਼ਨਾਂ ਗੁਆ ਸਕਦੀ ਹੈ। ਅਜਿਹੇ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਇੱਕ ਵਧੇਰੇ ਸੂਖਮ ਪਹੁੰਚ—ਘਟਨਾ ਨੂੰ ਲੌਗ ਕਰਨਾ, ਅਲਰਟ ਭੇਜਣਾ, ਜਾਂ ਆਟੋਮੇਸ਼ਨ ਨੂੰ ਰੋਕਣਾ—ਜ਼ਿਆਦਾ ਉਚਿਤ ਹੋ ਸਕਦੀ ਹੈ।
ਅੱਗੇ ਕੀ ਦੇਖਣਾ ਹੈ
- WordPress URL ਪੈਟਰਨ ਨੂੰ ਬਦਲ ਸਕਦਾ ਹੈ ਜਾਂ ਵਾਧੂ ਵੈਰੀਫਿਕੇਸ਼ਨ ਕਦਮ ਜੋੜ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ
adminhash=ਚੈੱਕ ਟੁੱਟ ਜਾਵੇਗਾ। ਕੋਰ ਰਿਲੀਜ਼ ਨੋਟਸ (core release notes) 'ਤੇ ਨਜ਼ਰ ਰੱਖੋ। - Playwright ਦਾ ਸਲੈਕਟਰ ਇੰਜਣ (selector engine) ਵਿਕਸਤ ਹੁੰਦਾ ਰਹਿੰਦਾ ਹੈ; ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਕਿਸੇ ਵੀ UI ਰੀਡਿਜ਼ਾਈਨ ਤੋਂ ਬਾਅਦ ਟੈਕਸਟ ਸਲੈਕਟਰ
"text=I'll wait"ਬਟਨ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਰਹੇ। - ਜੇਕਰ ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੀਆਂ ਸਾਈਟਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦੇ ਹੋ, ਤਾਂ ਡੁਪਲੀਕੇਟ ਕੋਡ ਤੋਂ ਬਚਣ ਲਈ ਇੱਕ ਸਾਂਝੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਬਾਈਪਾਸ ਲੌਜਿਕ ਨੂੰ ਕੇਂਦਰੀਕ੍ਰਿਤ ਕਰਨ ਬਾਰੇ ਵਿਚਾਰ ਕਰੋ।
ਐਡਮਿਨ-ਈਮੇਲ ਕਨਫਰਮੇਸ਼ਨ ਪੇਜ ਨੂੰ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਸੰਭਾਲ ਕੇ, ਡਿਵੈਲਪਰ ਕਦੇ-ਕਦੇ ਹੋਣ ਵਾਲੇ timeout ਨੂੰ ਆਪਣੇ Playwright ਸਕ੍ਰਿਪਟਾਂ ਦੇ ਰੁਟੀਨ ਹਿੱਸੇ ਵਿੱਚ ਬਦਲ ਦਿੰਦੇ ਹਨ, ਜਿਸ ਨਾਲ WordPress ਆਟੋਮੇਸ਼ਨ ਭਰੋਸੇਯੋਗ ਰਹਿੰਦੀ ਹੈ ਭਾਵੇਂ ਪਲੇਟਫਾਰਮ ਕੋਈ ਅਣਚਾਹਿਆ ਸੁਰੱਖਿਆ ਪ੍ਰੋਂਪਟ ਹੀ ਕਿਉਂ ਨਾ ਦੇਵੇ।
