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
- Nainstalujte a aktivujte plugin. Počítání začne okamžitě.
- 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. - 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“
-
- Přejděte na
WP-Admin -> Stránky -> Přidat novou - Do pole pro název příspěvku zadejte libovolný název
- 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“.
- Klikněte na „Upravit“, do textového pole zadejte
useronlinea klikněte na „Uložit“. - Do oblasti pro zadávání příspěvku zadejte
[page_useronline] - 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. - Přejděte na
-
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 souboruwp-config.phpnad řá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
auseronline_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_botsfiltruje 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
Autoři
WP-UserOnline je otevřený software. Následující lidé přispěli k vývoji tohoto pluginu.
SpolupracovníciPlugin „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 funkceesc_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 vREQUEST_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ězcewp-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_addresszvyš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 useronline—listacount. Příkaz pouze čte, nikdy nezapisuje. - NOVINKA: REST API
useronline/v1pro načítání počtů a pro kontrolu aktivity návštěvníků. Akceadmin-ajax.phpwp_useronlinezů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_userauseronline_trust_proxyse všechny mění nawp_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_PROXYse 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-useronlinev 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 pouzelist_users. Nový filtrwp_useronline_capabilitytuto funkci obnovuje, a to výhradně pro tuto záložku. - AKTUÁLNÍ ZPRÁVA: Řádky s možnostmi byly přejmenovány.
useronlinese mění nawp_useronline_optionsauseronline_mostse mění nawp_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_displaybez 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 filtruwp_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řídyUserOnline,UserOnline_Template,UserOnline_Optionsa ostatní již pod těmito názvy neexistují. - AKTUÁLNÍ ZPRÁVA: Skript pro aktualizaci se nachází na adrese
js/wp-useronline.jsnamístouseronline.js, jeho lokalizovaný objekt jewpUserOnlineL10nnamístouseronlineL10n, a akce admin-ajax, kterou odesílá, jewp_useronlinenamístouseronline. - NOVINKA: Značky aktualizace se nacházejí ve vlastním řádku parametrů
wp_useronline_version, který obsahuje přesněpluginadb, 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_capabilityfiltruje 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_Installje 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
styleani 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-detailsdo 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-detailsodkazoval 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-pageauseronline-detailszů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ě.
