WP-UserOnline

Popis

WP-UserOnline zobrazuje, kolik lidí se právě teď nachází na vašem webu a kde se nacházejí. Členové jsou uvedeni jménem, počítá se i počet hostů a vyhledávacích robotů a celé zobrazení se aktualizuje na pozadí bez nutnosti znovu načíst stránku.

Funkce

  • Počítadlo, řádek „Kdo právě prohlíží tuto stránku“ a řádek „Kdo právě prohlíží tento web“ – každý z nich lze použít samostatně.
  • Stránka s kompletním přehledem uživatelů online, na které jsou uvedeni všichni návštěvníci spolu s informací, na jaké stránce se právě nacházejí, odkud přišli a kdy se připojili.
  • Widget v postranním panelu, který nabízí kteroukoli z těchto pěti kombinací.
  • Každý řetězec je šablona, kterou můžete upravit, takže text si volíte sami, nikoli plugin.
  • Přibližně tři sta vyhledávacích robotů rozpoznaných podle user agentu a filtr pro přidání vlastních.
  • Jedna obrazovka pro správu se třemi záložkami – kdo je právě online, nastavení, šablony – a navíc jeden řádek v panelu „Na první pohled“ na řídicím panelu.
  • Sekce na stránce WP-Stats po instalaci tohoto pluginu.

Dary

Většinu svého volného času jsem věnoval tvorbě, aktualizaci, údržbě a podpoře těchto pluginů. Pokud se vám moje pluginy opravdu líbí a mohli byste mi věnovat pár dolarů, velmi bych to ocenil. Pokud ne, můžete je klidně používat bez jakýchkoli závazků.

Použití

Nejjednodušší způsob je použít widget. Přejděte na WP-Admin –> Vzhled –> Widgety, přidejte widget UserOnline do postranního panelu a vyberte, který z pěti typů statistik má zobrazovat.

Klasické téma může místo toho přímo volat šablonové tagy kdekoli v souborech sidebar.php, header.php nebo v části šablony:

<?php if ( function_exists( 'users_online' ) ) : ?>
    <p>Users online: <span id="useronline-count"><?php users_online(); ?></span></p>
<?php endif; ?>

Důležité jsou identifikátory prvků: useronline-count, useronline-browsing-site, useronline-browsing-page a useronline-details – právě tyto prvky vyhledává skript pro aktualizaci. Číslo zobrazené mimo některý z těchto prvků je správné, pokud se při načtení stránky zobrazí a poté zůstane na svém místě.

Chcete-li návštěvníkům nabídnout vlastní stránku se seznamem všech uživatelů online, vytvořte stránku a vložte do ní tento zkrácený kód:

[page_useronline]

Všechny funkce pluginu najdete na stránce WP-Admin –> WP-UserOnline ve třech záložkách: Users Online (uživatelé online) – kde vidíte, kdo je právě připojen, Settings (nastavení) a Templates (šablony) – kde můžete upravit texty všech hlášení, která plugin zobrazuje.

Zobrazení uživatelů online v bloku

V editoru je k dispozici jeden blok, a to v části Widgety:

  • Uživatelé online — všichni, kdo jsou právě teď na webu, rozdělení do skupin členů, hostů a botů, s uvedením stránky, kterou právě čtou, a pod tím rekordem v počtu uživatelů online. Stejný seznam generuje i [page_useronline].

Vykresluje se to na serveru, takže náhled v editoru představuje skutečný záznam, nikoli pouhý odhad, a stránka se při čtení návštěvníkem aktualizuje přesně tak, jak to dělá shortcode. Do příspěvku se vkládá pouze jeden: záznam obsahuje vlastní prvek useronline-details a skript pro aktualizaci jej podle tohoto názvu vyhledá.

Při vykreslování se nikdo nezaznamenává. Při náhledu bloku v editoru se k zobrazeným číslům nepřidáte, ať už se náhled aktualizuje kolikrátkoli — návštěvníci se zaznamenávají při načtení stránky, nikoli při vykreslení seznamu.

Zkrácený kód stále funguje a nikam nezmizí. [page_useronline] se chová přesně tak, jak vždy, a stránka, která jej již obsahuje, nevyžaduje žádné změny. Blok volá stejný kód jako zkrácený kód, takže se oba vykreslují identicky – použijte ten, který se k dané stránce hodí.

WP-CLI

wp useronline list
wp useronline list --format=count
wp useronline count

Tento příkaz pouze čte a nikdy nezapisuje. Tabulka se spravuje sama – při každém přístupu se vymažou řádky, u nichž vypršela platnost – a administrační rozhraní neumožňuje žádné destruktivní akce, takže ani tento příkaz je neprovádí.

REST API

GET  /wp-json/useronline/v1/count
POST /wp-json/useronline/v1/visit
count reports how many are online now, the record and its date, and records nobody — so a monitoring script polling it does not appear in the figure it is reading. `visit` is the heartbeat: it records the caller and answers with one of the four views, given a `mode` of `count`, `browsing-site`, `browsing-page` or `details`, plus the `page_url` they are on.

Žádná z těchto metod nepřijímá nonce, a to záměrně. Nonce nemůže ověřit návštěvníka, který není přihlášen: anonymní nonce pocházejí z jedné relace, kterou sdílí všichni takoví volající, takže její vyžadování by nic nedokázalo a zároveň by znemožnilo přístup všem návštěvníkům, kteří nejsou přihlášeni. page_url, která neodkazuje na tento web, je ignorována a signál heartbeat nezapíše nic jiného než vlastní řádek volajícího.

Tyto trasy představují doplněk. Akce admin-ajax.php wp_useronline zůstává beze změny a je i nadále podporována.

Snímky obrazovky

Bloky

Tento plugin poskytuje 1 blok.

  • Users Online Everyone on the site right now, with the page each of them is reading.

Instalace

  1. Nainstalujte a aktivujte plugin. Počítání začne okamžitě.
  2. Zobrazte jej tam, kde chcete: přidejte widget UserOnline do postranního panelu, vložte blok, zadejte na stránku [page_useronline] nebo vyvolejte šablonové tagy ze svého motivu.
  3. Přejděte na WP-Admin -> WP-UserOnline, kde najdete nastavení časového limitu, názvy a další možnosti.

Nejčastější dotazy

Vytvoření stránky „A UserOnline“

  1. Přejděte na WP-Admin -> Stránky -> Přidat novou
  2. Do pole pro název příspěvku zadejte libovolný název
  3. Pokud používáte „pěkné“ trvalé odkazy, WordPress po zadání názvu stránky vygeneruje trvalý odkaz na tuto stránku. Hned vedle trvalého odkazu se zobrazí odkaz „Upravit“.
  4. Klikněte na „Upravit“, do textového pole zadejte useronline a klikněte na „Uložit“.
  5. Do oblasti pro zadávání příspěvku zadejte [page_useronline]
  6. Klikněte na „Zveřejnit“

Pokud NEPOUŽÍVÁTE přehledné permalinky, musíte přejít na WP-Admin -> WP-UserOnline -> Nastavení (záložka Nastavení) a v poli „URL UserOnline“ zadat adresu stránky UserOnline, kterou jste vytvořili výše.

Zobrazení největšího počtu uživatelů online

  • Použití:
<?php if ( function_exists( 'get_most_users_online' ) ) : ?>
    <p>Most Users Ever Online Is <?php echo get_most_users_online(); ?> On <?php echo get_most_users_online_date(); ?></p>
<?php endif; ?>

Zobrazení uživatelů procházejících web

  • Použití:
<?php if ( function_exists( 'get_users_browsing_site' ) ) : ?>
    <div id="useronline-browsing-site"><?php echo get_users_browsing_site(); ?></div>
<?php endif; ?>

Zobrazení uživatelů, kteří právě prohlížejí stránku

  • Použití:
<?php if ( function_exists( 'get_users_browsing_page' ) ) : ?>
    <div id="useronline-browsing-page"><?php echo get_users_browsing_page(); ?></div>
<?php endif; ?>

Každý návštěvník má stejnou IP adresu

Váš web je za reverzním proxy serverem nebo CDN – Cloudflare, vyvažovačem zátěže, nginxem
před Apachem –, takže adresa, kterou vidí PHP, je adresa proxy serveru, nikoli adresa návštěvníka.

Skutečná adresa se nachází v hlavičce X-Forwarded-For, ale WP-UserOnline tuto
hlavičku ve výchozím nastavení ignoruje: jakýkoli klient ji může odeslat s libovolnou hodnotou, takže její slepá důvěra umožňuje
návštěvníkovi zfalšovat svou adresu. Zapněte tuto funkci pouze v případě, že ji skutečně nastavuje proxy, kterou ovládáte, a to tak, že
přidáte následující kód do souboru wp-config.php nad řádek /* To je vše, ukončete úpravy! */:

define( 'WP_USERONLINE_TRUST_PROXY', true );

Pokud se potřebujete rozhodnout až za běhu — například důvěřovat mu pouze u požadavků přicházejících z vašeho
rozdělovače zátěže — použijte místo toho filtr:

add_filter( 'wp_useronline_trust_proxy', function () {
    return isset( $_SERVER['REMOTE_ADDR'] ) && '10.0.0.1' === $_SERVER['REMOTE_ADDR'];
} );

Pokud není nastaveno ani jedno z nich, plugin zaznamená REMOTE_ADDR — což je správné v případě přímého připojení k hostiteli, zatímco v případě připojení přes
proxy se zaznamená adresa proxy.

V verzi 4.0.0 došlo k přejmenování jak konstanty, tak filtru, a to z USERONLINE_TRUST_PROXY
a useronline_trust_proxy. Staré názvy již nemají žádný účinek, takže pokud byl váš web
již zapojen do této funkce, přejmenujte je, jinak se každému návštěvníkovi začne zobrazovat adresa proxy.

Kdo může vidět obrazovku „Uživatelé online“?

Kdokoli s oprávněním manage_options, což v praxi znamená správci. Před verzí 4.0.0 byla
tato obrazovka přístupná komukoli, kdo měl oprávnění list_users, což na mnoha webech zahrnovalo i editory.
Chcete-li to vrátit do původního stavu, filtrujte oprávnění — kontext odlišuje záložku „Uživatelé online“
od ostatních dvou a každá záložka kontroluje pouze své vlastní oprávnění, takže se nastavení neotevře
současně:

add_filter( 'wp_useronline_capability', function ( $capability, $context ) {
    return 'useronline' === $context ? 'list_users' : $capability;
}, 10, 2 );

Mohu změnit seznam vyhledávacích robotů?

Ano. wp_useronline_bots filtruje celý seznam, jehož klíče představují jména zobrazená v
seznamu online uživatelů a jehož hodnoty představují fragment (bez rozlišování velkých a malých písmen), který se hledá v
uživatelském agentovi:

add_filter( 'wp_useronline_bots', function ( $bots ) {
    $bots['My Crawler'] = 'mycrawler';

    return $bots;
} );

Plugin se neaktivuje

WP-UserOnline 4.0 a novější verze vyžadují WordPress 6.8 a PHP 8.2. WordPress zkontroluje obě tyto podmínky a
v případě starších verzí odmítne plugin aktivovat a upozorní vás, která z nich nesplňuje požadavky.

Chcete-li zjistit, jaký systém váš hostitel používá, podívejte se na Nástroje –> Stav webu –> Informace –> Server, nebo
nainstalujte WP-ServerInfo.

Pokud nemůžete provést aktualizaci, WP-UserOnline 3.0.0 je poslední verze, která podporuje WordPress 6.0
a PHP 7.4.

Recenze

26. 7. 2026
This plugin is top-tier! It works flawlessly right out of the box—no glitches, no conflicts, just pure performance. I’ve installed it on all my sites and honestly, it’s become a non-negotiable must-have. If you run a WordPress site, do yourself a favor and grab this now. Highly recommended!
9. 5. 2023
Installed, activated widget, and the Divi Theme broke. Widget not shown on front end I’m looking everywhere for at widget or anything to display live users on my site. The internet is almost comlpetely empty on the subject. Was standard in HTML ffrom the early beginnings of the internet. Please fix, and I’ll rate anew.
11. 8. 2021
This is exactly what I was looking for. Quick and simple way to see if there are users connected. No complicated setup, no 3rd party accounts needed. All in the Backend. Perfect
Přečtěte si všech 38 recenzí

Autoři

WP-UserOnline je otevřený software. Následující lidé přispěli k vývoji tohoto pluginu.

Spolupracovníci

Plugin „WP-UserOnline“ byl přeložen do 20 jazyků. Děkujeme všem překladatelům za jejich pomoc.

Přeložte “WP-UserOnline” do svého jazyka.

Zajímá vás vývoj?

Prohledejte kód, podívejte se do SVN repozitáře, nebo se přihlaste k odběru protokolu vývoje pomocí RSS.

Přehled změn

4.0.0

  • OPRAVENO: Zaznamenaná adresa mohla být URL relativní k protokolu, což je v podstatě absolutní adresa maskovaná jako relativní. https://example.com//evil.com/ byla analyzována s hostitelem tohoto webu, prošla kontrolou hostitele a byla uložena jako //evil.com/ a z funkce esc_url() vyšla beze změny — veřejný záznam tak obsahoval odkaz na cizí web. Úvodní lomítka se nyní srážejí na jedno, a to jak v odeslané URL, tak v REQUEST_URI
  • OPRAVENO: Seznam nezveřejňoval polohu návštěvníka, který se nacházel v administračním rozhraní, ale zveřejňoval jeho odkazující stránku z téže větve, aniž by se na ni vůbec podíval. Každý, kdo klikl na odkaz ve front-endu z administrátorské obrazovky, tak zveřejnil celou administrátorskou URL — obrazovku, ID příspěvku a _wpnonce — anonymním čtenářům, protože navigace ze stejného původu přenáší podle zásad WordPressu pro referrer celou URL. Odkazující adresa je nyní testována samostatně a oba testy porovnávají s vlastní administrátorskou cestou webu namísto doslovného řetězce wp-admin, který se nikdy neshodoval na webu, který ji přesunul
  • OPRAVENO: Jedna adresa mohla zaplnit tabulku a trvale nadhodnocovat počet „nejvíce uživatelů online v historii“ – údaj, který se nikde neresetuje – tím, že při každém požadavku měnila svůj user agent, čímž obcházela deduplikaci a zanechávala jeden řádek za sekundu, který zůstal zachován po celou dobu timeoutu. Nyní se uchovává maximálně dvacet řádků na jednu adresu; wp_useronline_max_per_address zvyšuje tento limit, zatímco hodnota nula jej ruší
  • OPRAVENO: Obnovovací koncový bod provádí ověření pomocí souboru cookie, takže při odeslání formuláře z jiné stránky došlo k jeho spuštění pod účtem přihlášeného uživatele a jeho záznam byl nahrazen stránkou a názvem podle volby útočníka, které byly zveřejněny pod jménem tohoto uživatele. Přihlášený uživatel nyní potřebuje jednorázový kód (nonce); odhlášený uživatel jej stále nepotřebuje, protože anonymní jednorázový kód je sdílen všemi anonymními návštěvníky a nic nedokazuje.
  • NOVINKA: Příkaz WP-CLI wp useronlinelist a count. Příkaz pouze čte, nikdy nezapisuje.
  • NOVINKA: REST API useronline/v1 pro načítání počtů a pro kontrolu aktivity návštěvníků. Akce admin-ajax.php wp_useronline zůstává beze změny a je i nadále podporována.
  • NOVINKA: Blok Uživatelé online v části „Widgety“ v editoru, který zobrazuje stejný seznam jako [page_useronline]. Krátký kód zůstává beze změny a je i nadále podporován; tento blok je doplňkem k němu, volá stejný kód a při vykreslení nezaznamenává žádné uživatele.
  • AKTUÁLNÍ ZPRÁVA: Vyžaduje WordPress 6.8 a PHP 8.2, místo dosavadních verzí 6.0 a 7.4.
  • AKTUÁLNÍ ZPRÁVA: Všechny filtry spouštěné tímto pluginem jsou přejmenovány a původní názvy jsou odstraněny, a to bez přechodných řešení pro zastaralé funkce: useronline_bots, useronline_buckets, useronline_custom_template, useronline_page, useronline_display_user a useronline_trust_proxy se všechny mění na wp_useronline_*. Tím se ruší slib uvedený v seznamu změn verze 3.0.0, že filtry zůstanou beze změny, a proto je tato verze označena jako 4.0.0 namísto 3.0.1.
  • AKTUÁLNÍ ZPRÁVA: USERONLINE_TRUST_PROXY se nyní nazývá WP_USERONLINE_TRUST_PROXY. Web, který stále používá starý název, přestane bez varování důvěřovat svému proxy serveru a začne u každého návštěvníka zaznamenávat jeho adresu. Viz často kladené otázky.
  • AKTUÁLNÍ ZPRÁVA: Plugin má jednu obrazovku, která se nachází na adrese admin.php?page=wp-useronline v hlavní nabídce WP-UserOnline, a obsahuje tři záložky: Users Online, Settings a Templates. Dříve se přehled nacházel v části Dashboard a nastavení v části Settings.
  • AKTUÁLNÍ ZPRÁVA: Každá záložka nyní vyžaduje manage_options. Seznam online uživatelů dříve vyžadoval pouze list_users. Nový filtr wp_useronline_capability tuto funkci obnovuje, a to výhradně pro tuto záložku.
  • AKTUÁLNÍ ZPRÁVA: Řádky s možnostmi byly přejmenovány. useronline se mění na wp_useronline_options a useronline_most se mění na wp_useronline_most, který se již automaticky nenačítá. Vaše nastavení se automaticky přenesou při prvním načtení po aktualizaci.
  • AKTUÁLNÍ ZPRÁVA: Společný řádek s volbami stats_display bez předpony již není načítán. Integrace WP-Stats je nyní nastavením tohoto pluginu samotného a WP-Stats žádá každý plugin o jeho sekci prostřednictvím filtru wp_stats_sections, místo aby četl možnosti jiných pluginů. Aktualizujte všech sedm pluginů podporujících WP-Stats najednou; viz Oznámení o aktualizaci.
  • AKTUÁLNÍ ZPRÁVA: Všechny třídy byly přejmenovány na WP_UserOnline_*. Třídy UserOnline, UserOnline_Template, UserOnline_Options a ostatní již pod těmito názvy neexistují.
  • AKTUÁLNÍ ZPRÁVA: Skript pro aktualizaci se nachází na adrese js/wp-useronline.js namísto useronline.js, jeho lokalizovaný objekt je wpUserOnlineL10n namísto useronlineL10n, a akce admin-ajax, kterou odesílá, je wp_useronline namísto useronline.
  • NOVINKA: Značky aktualizace se nacházejí ve vlastním řádku parametrů wp_useronline_version, který obsahuje přesně plugin a db, a jsou zapsány najednou v rámci jedné aktualizace na konci procesu aktualizace.
  • NOVINKA: Integrace WP-Stats se nastavuje přímo v nastavení tohoto pluginu, na záložce „Nastavení“ v části „WP-Stats“, nikoli pomocí zaškrtávacího políčka přidaného na stránku nastavení WP-Stats.
  • NOVINKA: wp_useronline_capability filtruje oprávnění požadované každou záložkou, přičemž kontext udává, která z nich o něj žádá. Samotná stránka je zaregistrována pod oprávněním „report“ a každá záložka kontroluje své vlastní oprávnění, takže rozšíření seznamu nemůže předat formulář nastavení.
  • NOVINKA: Šablony se nyní nacházejí na samostatné záložce „Šablony“ a nikoli pod nastavením. Obě záložky ukládají jedno nastavení do jednoho řádku možností a sanitizér sloučí údaje zadané na záložce s těmi, které jsou uloženy, takže uložení na jedné záložce nemůže vymazat údaje na druhé.
  • NOVINKA: Funkce „Obnovit výchozí nastavení“ je nyní plnohodnotný skript zařazený do fronty, js/wp-useronline-admin.js, a nikoli kód vložený přímo do stránky.
  • NOVINKA: JavaScript je testován pomocí nástrojů vitest a jsdom a sada testů pro PHP běží jak v síti, tak i na jednotlivém webu.
  • ZMĚNA: WP_UserOnline_Install je vlastníkem tabulky, migrace i značek, takže instalace a odinstalace jsou umístěny vedle sebe a ani jedna z nich se nemůže posunout.
  • OPRAVENO: Značky aktualizace již nejsou uloženy v poli nastavení. Byly uloženy pod vyhrazeným klíčem versions, který formulář nastavení nikdy neodesílal, takže při každém uložení bylo nutné je ručně zachránit z uložené hodnoty — což je příčinou chyby ve verzi 3.0.0, kdy nebylo možné značku vůbec uložit po načtení obrazovky nastavení. Nyní mají vlastní řádek a nástroj pro čištění nastavení se jimi nezabývá.
  • OPRAVENO: Obrazovka nastavení již nevytváří inline atribut style ani inline blok <script>.
  • OPRAVENO: Zaškrtávací políčko WP-Stats odesílá explicitní hodnotu „vypnuto“. Nezaškrtnuté políčko neodesílá vůbec nic a sanitizér zachovává vše, co nebylo odesláno pomocí klávesy Tab, takže bez této opravy by se sekce mohla zapnout a už nikdy vypnout.
  • OPRAVENO: Periodická aktualizace již nevnořuje kontejner useronline-details do sebe sama. Podrobná zpráva je vrácena jako celkový kontejner a aktualizace zapsala tuto odpověď do kontejneru, ve kterém se již nacházela – takže stránka ponechaná otevřená získávala při každém vypršení časového limitu další kopii stejného ID prvku, přičemž se pokaždé posunula o úroveň hlouběji. Nedošlo k žádné chybě a čísla se nadále aktualizovala, ale značka byla neplatná a jakýkoli CSS kód šablony nebo JavaScript vázaný na #useronline-details odkazoval po první aktualizaci na jiný prvek. Aktualizace nyní tento kontejner nahrazuje, místo aby jej vyplňovala.
  • POZNÁMKA: Šablonové tagy, zkrácený kód [page_useronline] a identifikátory prvků useronline-count, useronline-browsing-site, useronline-browsing-page a useronline-details zůstávají beze změny. Všechno ostatní, co bylo veřejně přístupné, bylo přesunuto; viz Oznámení o aktualizaci.
  • POZNÁMKA: Popisky „on“, „url“ a „referral“ v podrobném seznamu nyní obsahují kontext pro překladatele, protože k překladu nestačí jedno slovo vytržené z kontextu. Tyto tři msgidy se změnily, takže stávající překlady těchto výrazů se do doby, než budou znovu přeloženy, zobrazují v angličtině.