WordPress időzítés
WordPress időzítés kudarca
Érintettem már egyszer a WordPress időzítő témáját, de csupán általánosan, most a WordPress időzítés talán ritkább okokra visszavezethető kudarcáról szeretnék beszélni.
Probléma ami sajnos megtörténhet, s ellehetetleníti a WordPress időzítést. 👇
📣 Megesik, hogy a WordPress időzónája, a szervered időpontok kezelése, valamint a kliens időzónája (számítógép amelyen a WordPress használatban van) nincsenek szinkronban.
💡 Mire kínálok megoldást PHP script valamint JS lehetőségek kiaknázásával❓
1 ) Arra, hogy a WordPress Vezérlőpult (Dashboard) megjelenítse számodra az időzóna validátor információit.
Ez kijelzi a WordPress időzítés számára fontos WordPress időzónát. Tulajdonképpen azt, ami a „Beállítások / Általános” helyen az „Időzóna” résznél is beállítható.
Megadja számodra a pontos szerver időt, valamint, hogy a szerver UTC-t (Coordinated Universal Time – Egyeztetett Világidő) használ -e? Itt az elején ez fontos, mert a PHP kódom csak azok számára gyógyír, ahol a szerver UTC kezelést alkalmaz az időpontokra. Végül pedig, ami szintén hasznos képbehelyező információ, megmutatja azt is, hogy a kliensgépen milyen időzóna van.
2 ) Az alkalmazott PHP kód amit kínálok Neked, gondoskodik arról, hogy a
WordPress időzónát és a kliensgép időzónáját mindig összehasonlítsa egymással.
Ez azért jó Neked, mert általában a kliensgépek mihelyst felcsatlakoznak az Internet hálózatára, tulajdonképpen szinte bármely operációs rendszert is veszem alapul, de idő és dátum szinkronizálást hajtanak végre.
Tehát a PHP kódom a WordPress időzítés témájában itt azért egy kényelmi megoldás is egyben, mert ennek köszönhetően az Európai Unió jogharmonizációja útján ránk is ragasztott átka, a
✅ 🌞nyári – ❄️ téli időszámítás eltérése többé nem lesz probléma❗
A WordPress ugyanis magától nem állítja be az alkalmazott időzónát. Viszont mivel a kliensgép mindig frissül, így a legjobb ha a kliensgép időzónájával mindig felülírjuk a beállított WordPress időzónát. Mivel ez kliens oldali ügylet, ezért kellett egy JS-t is beiktatni.
3 ) Végezetül, ahhoz hogy a fenti 1 ) és 2 ) pontok mint WordPress időzítés tökéletesen menjenek végbe, azért szükséges az alábbi is ⬇️
Gondoskodni kell arról is, hogy mind posztok mind oldalak esetén, lementésük során az időpontok UTC-re konvertálása megtörténjen. Természetesen frissíteni kell a posztok GMT (Greenwich Mean Time – Greenwichi Középidő) időpontját.
🤔 Hogyan valósítható meg a WordPress időzítés PHP és JS beiktatásával❓
Szimplán a functions.php fájlba beépíthető PHP kódokat valamint JavaScript megoldás kódját mutatom itt, kimásolható formában. A megoldásnak sablontól függetlenül működnie kell.
ℹ️ Értelemszerűen a kódokban a <?php nyitó és záró ?> részeket a saját functions.php fájlodnak megfelelően alkalmazd, attól függően a fájl melyik helyére illeszted, mert lehet nem is lesz rá szükséged, sőt ha belerakod, esetleg hibát kapsz.
PHP kód az időzóna validátor információjának megjelenítéséhez a Vezérlőpulton:
A lenti kód hatására a Vezérlőpult teteje, valahogy így fog kinézni, ahogy illusztrálom 👇

//**Admin értesítés: Időzóna validátor megjelenése a Vezérlőpulton!*/
add_action(‘admin_notices’, ‘tz_validator_admin_notice’);
function tz_validator_admin_notice() {
//**Csak a vezérlőpulton jelenjen meg*/
if (function_exists(‘get_current_screen’)) {
$screen = get_current_screen();
if ($screen && $screen->base !== ‘dashboard’) {
return;
}
}
//**WordPress időzóna lekérése*/
$wp_timezone = get_option(‘timezone_string’);
if (!$wp_timezone) {
$offset = get_option(‘gmt_offset’);
$wp_timezone = ‘UTC’ . ($offset >= 0 ? ‘+’ : ‘’) . $offset;
}
//**Szerver idő és időzóna*/
$server_time = date(‘Y-m-d H:i:s’);
$server_timezone = date_default_timezone_get() ?: ‘Ismeretlen’;
//**Megjelenítés*/
echo ‘<div class=”notice notice-info”><p>’;
echo ‘<strong style=”color: red;”> Időzóna validátor </strong><br>’;
echo ‘<strong style=”color: blue;”>WordPress</strong> időzóna: <code>’ . esc_html($wp_timezone) . ‘</code><br>’;
echo ‘Szerver idő: <code>’ . esc_html($server_time) . ‘</code> <em>(’ . esc_html($server_timezone) . ‘)</em><br>’;
echo ‘Kliens idő: <span id=”client-timezone”>Betöltés alatt…</span>’;
echo ‘</p></div>’;
}
//**JavaScript: Kliens időzóna érzékelése*/
add_action(‘admin_footer’, ‘tz_validator_client_script’);
function tz_validator_client_script() {
//**Csak a vezérlőpulton fusson*/
if (function_exists(‘get_current_screen’)) {
$screen = get_current_screen();
if ($screen && $screen->base !== ‘dashboard’) {
return;
}
}
}
A szükséges JavaScript megoldásom a WordPress időzóna és a kliensgépen lévő időzóna szinkronizálásához, mint kliens oldalon lévő infó
Mivel ez JavaScript kód, ne felejtsd el a <script> nyitó és záró </script> tag-eket alkalmazni!
document.addEventListener(‘DOMContentLoaded’, function() {
const target = document.getElementById(‘client-timezone’);
if (!target) return;
try {
const offset = new Date().getTimezoneOffset(); // percben
const utcOffset = -offset / 60; // órában
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
// AJAX hívás a szerver felé
fetch(ajaxurl, {
method: ‘POST’,
headers: {‘Content-Type’: ‘application/x-www-form-urlencoded’},
body: ‘action=sync_timezone&client_tz=’ + encodeURIComponent(tz)
})
.then(res => res.text())
.then(data => console.log(‘Időzóna szinkron válasz:’, data));
const display = tz + ‘ (UTC’ + (utcOffset >= 0 ? ‘+’ : ‘’) + utcOffset + ‘)’;
target.innerText = display;
} catch (e) {
target.innerText = ‘Nem sikerült lekérni a kliens időzónát’;
}
});
Az alábbi kódrészlet szükséges a ❄️téli – 🌞nyári időszámítás automatikus beállításához:
//**Fontos: Ez a rész, ami feldolgozza a kliens időzónát és frissíti a WordPress beállítást, ha eltérés lenne a kettő között. Azért hasznos, mert ha elfelejtkezünk a téli, nyári időszámítás beállításáról, ez a folyamat automatizál*/
add_action(‘wp_ajax_sync_timezone’, ‘tz_sync_callback’);
function tz_sync_callback() {
if (!current_user_can(‘manage_options’)) {
wp_die(‘Nincs jogosultság’);
}
$client_tz = sanitize_text_field($_POST[‘client_tz’] ?? ‘’);
if (!$client_tz) {
wp_die(‘Hiányzó időzóna’);
}
$wp_tz = get_option(‘timezone_string’);
if ($wp_tz !== $client_tz) {
update_option(‘timezone_string’, $client_tz);
wp_die(‘WordPress időzóna frissítve: ’ . esc_html($client_tz));
} else {
wp_die(‘Időzónák egyeznek, nincs változás’);
}
}
Ez a PHP kód lesz felelős azért, hogy a posztok, oldalak lementésekor az időpontok mindenképpen UTC-re legyenek konvertálva :
//** Az előzőek alapján az információt a Vezérlőpulton megjelenítettük, ami kiírja a WordPress beállított idejét, a használt kliensgép idejét, valamint a szerveren alkalmazott időt. Az alábbi kód viszont megvalósítja azt, hogy a posztok vagy oldalak lementésekor az időpont mindenképpen átkonvertálódjon UTC-re.*/
add_action(‘save_post’, ‘convert_post_time_to_utc’, 10, 3);
function convert_post_time_to_utc($post_ID, $post, $update) {
// Csak bejegyzésekre alkalmazzuk
if ($post->post_type !== ‘post’) {
return;
}
// Ellenőrizzük, hogy van-e időpont
if (empty($post->post_date)) {
return;
}
// WordPress időzóna lekérése
$wp_timezone = wp_timezone();
// WP időzónában létrehozott időpont
$local_time = new DateTime($post->post_date, $wp_timezone);
// Konvertálás UTC-re
$utc_time = clone $local_time;
$utc_time->setTimezone(new DateTimeZone(‘UTC’));
$post_date_gmt = $utc_time->format(‘Y-m-d H:i:s’);
// Frissítjük a poszt GMT időpontját
global $wpdb;
$wpdb->update(
$wpdb->posts,
[‘post_date_gmt’ => $post_date_gmt],
[‘ID’ => $post_ID]
);
}
ℹ️ Miért tartottam fontosnak a WordPress időzítés témájában ezt a már kódolást igénylő megoldást mint ötletet tálalni❓
Sokan szoktak megkeresni különböző kérdésekkel.
Néha olyan érzés ez, mintha magam is AI ügynök lennék 😂
Mégis hasznosak számomra ezek a közeledések, mert segítenek látni abban is, hogy az embereknek milyen problémáik vannak, s mire érdemes adekvát válaszokat adni.
Szóval nem egy, nem kettő figura keresett már meg azzal, hogy akár mit csinál, akár mit állít be, a WordPress időzítés mindig kudarcba fullad. S marad az a megoldás, hogy ☀️nyaralásuk🏖️ közben nyomkodják a publikálás gombot.
Több emberrel is beszélgettem, akik megkerestek
A közöttünk kialakult diszkurzusok során felszínre jöttek olyan esetek, hogy sokan a virtuális szerverüket, nem Magyarország területén bérlik, hanem itt is, meg ott is, a nagyvilágban. S látszódott, hogy a probléma sokszor a WordPress időzítés során a WordPress időzóna és kliensgép időzónájának eltérése, valamint, hogy a bejegyzések nem állnak harmóniában a szerver UTC időpontok kezelésével.
Szerintem ez a tartalmam, immáron jól ki tudja egészíteni a 🔗 WordPress időzítő írásom, amelyben a problémaforrások 99%-os okát érintettem, általános jelleggel. Szükséged van 🔗SEO támogatásra❓ Keress bátran, csak tudd, igen egyedi alak vagyok 😉
👋 Találkozzunk valamikor máskor, talán egy totál más írásom útján is❗
A világ globális működését feltérképező, s annak összefüggéseit megérteni óhajtó generalista vagyok. Célom nem más, mint az ismeretterjesztés.



















