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 ); -
Can I change where an IP address links to?
-
Yes. Each address in the detailed listing links to a lookup at
ipinfo.io, which answers for IPv4 and IPv6 alike. Before 4.0.1 it
went to a service that could not read an IPv6 address at all. To send it somewhere else,
filter the URL — the address arrives raw as the second argument, so encode it however
the service you pick wants it:add_filter( 'wp_useronline_ip_lookup_url', function ( $url, $ip ) { return 'https://who.is/whois-ip/ip-address/' . rawurlencode( $ip ); }, 10, 2 );Return an empty string to drop the link entirely and show the address as plain text,
which is what to do if you would rather not hand a visitor’s address to a third party:add_filter( 'wp_useronline_ip_lookup_url', '__return_empty_string' ); -
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; } ); -
My own code renders the counters and they never refresh
-
The refresh script loads only when something on the page has already rendered a counter
or a listing, and it is enqueued fromwp_footer— the one pass. Markup fetched over
admin-ajax.php or the REST API into a page that shows none of its own reaches neither:
the fetch has no footer to enqueue into, and the page rendered nothing to ask. The
numbers then sit at whatever they were when the markup was built.Say so from the page that will hold them:
add_filter( 'wp_useronline_needs_scripts', '__return_true' );Code that runs during the page itself can call
WP_UserOnline_Template::request_scripts()
instead, which is the same request every built-in render path makes. -
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.2
-
NEW: A
wp_useronline_needs_scriptsfilter, for code that renders the counters where WP-UserOnline cannot see it coming. The refresh script loads only when something on the page has rendered a counter or a listing, and it is enqueued fromwp_footer— the one pass. Markup fetched overadmin-ajax.phpor the REST API into a page that shows none of its own reaches neither, so its numbers never refreshed. Returning true from the filter is how such a page asks for the script. -
CHANGED:
WP_UserOnline_Template::needs_script()andrequest_script()are nowneeds_scripts()andrequest_scripts(), plural, matching every other name the plugin uses for its front end assets. Neither was ever documented, but they are public, so a theme or plugin calling one by name needs thes.
4.0.1
- NEW: A Settings link on the plugin’s row of the Plugins screen, opening the Users Online screen’s Settings tab.
- FIXED: The address of a visitor arriving over IPv6 linked to a lookup that cannot read one. Every such visitor’s link answered „Malformed Domain or IP“, which is most of the detailed listing on a site whose host has IPv6 switched on. The lookups now go to ipinfo.io, which answers for IPv4 and IPv6 alike
- NEW:
wp_useronline_ip_lookup_urlfilters where an address is looked up, so a site can send it somewhere else — or return an empty string and keep the address as plain text with no link at all. See the FAQ - FIXED: Every page view read the whole table twice — dropping the visitor’s previous row and counting what their address holds both filter on columns the table’s only key does not start with. Keys on
user_ipanduser_idcover both now, and an existing install gains them on upgrade, so the per-request bookkeeping stops scanning the table as a busy site’s list grows
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. - BREAKING: Requires WordPress 6.8 and PHP 8.2.
- 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ě.
