Popis
Plugin WP-PostViews počítá, kolikrát byl každý příspěvek, stránka nebo vlastní typ příspěvku přečten, a poskytuje místo, kde lze tento počet zobrazit. Počet se ukládá jako metadata příspěvku, takže se dá třídit, vyhledávat a exportovat stejně jako jakékoli jiné údaje, které WordPress o příspěvku uchovává.
Funkce
- Počet zobrazení libovolného příspěvku, stránky nebo vlastního typu příspěvku, který se zobrazuje pomocí šablonového tagu nebo zkráceného kódu
[views]. - Dvě šablony, které si můžete sami upravit, s proměnnými pro počet, název, datum, úryvek, miniaturu, autora a další údaje.
- Vyberte, koho chcete započítat – všechny, pouze hosty nebo pouze přihlášené uživatele – a vynechte známé roboty.
- Šablonové tagy a widget pro příspěvky s nejvyšším a nejnižším počtem zobrazení, případně v rámci konkrétní kategorie nebo tagu.
- Tabulka seřazovatelných sloupců „Zobrazení“ v seznamech příspěvků a stránek.
- Počet zobrazení v REST API jako pole
viewsa cesta pro počítání pomocí AJAXu pro weby využívající mezipaměť stránek. - 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šším způsobem, a zároveň jediným, který funguje v blokovém šabloně bez úpravy šablonových souborů, je použití zkráceného kódu. Vložte jej do příspěvku nebo stránky, u které chcete zobrazit počet:
[zobrazení]udává počet zobrazení příspěvku, ve kterém se tento údaj nachází.[views id="1"]zobrazí počet zobrazení příspěvku č. 1, ať už jej umístíte kamkoli.
Aby se počet zobrazil automaticky u každého příspěvku, klasické téma volá šablonový tag z index.php, archive.php, single.php nebo page.php kdekoli uvnitř smyčky:
<?php if ( function_exists( 'the_views' ) ) { the_views(); } ?>
Nastavení najdete na stránce WP-Admin -> Nastavení -> WP-PostViews, a to na dvou záložkách. Na záložce Nastavení si vyberete, kdo se bude započítávat a zda se v WP-Stats zobrazí sekce Zobrazení; na záložce Šablony upravujete kód, pomocí kterého se počet zobrazení vykresluje.
O tom, kde se počet zobrazení zobrazí, rozhoduje to, kde vaše šablona volá the_views() nebo kam umístíte zkrácený kód. Chcete-li jej někde konkrétně skrýt, použijte filtr wp_postviews_should_display:
add_filter( 'wp_postviews_should_display', function ( $show ) {
return ! is_archive() && ! is_search();
} );
Zobrazení počtu zobrazení v bloku
V editoru je k dispozici jeden blok, a to v části Widgety:
- Počet zobrazení příspěvku — počet zobrazení, vykreslený pomocí šablony z karty Šablony. Nechte ID příspěvku na nule, aby se zobrazoval počet zobrazení příspěvku, ve kterém se blok nachází (stejně jako u prázdného
[views]), nebo nastavte ID jiného příspěvku, aby se místo toho zobrazoval počet zobrazení tohoto příspěvku.
Vykresluje se to na serveru, takže náhled bloku v editoru zobrazuje skutečný počet, nikoli přibližnou hodnotu, a počet se zvyšuje u každého příspěvku, ve kterém se blok zobrazuje, aniž by bylo nutné cokoli znovu ukládat. Náhled bloku v editoru se do počtu zobrazení nezapočítává.
Zkrácený kód stále funguje a nikam nezmizí. [views] a [views id="1"] se chovají přesně tak, jak vždy, a příspěvek, který již některý z nich obsahuje, není třeba měnit. Blok volá stejný kód jako zkrácený kód, takže se oba vykreslují identicky — použijte ten, který se k příspěvku hodí.
WP-CLI
wp postviews list
wp postviews list --limit=50 --format=json
wp postviews get 42
Tento příkaz pouze čte a nikdy nezapisuje. Žádná obrazovka v tomto pluginu neupravuje počet zobrazení, takže ani tento příkaz tuto funkci nenabízí — wp post meta update <id> views <n> je stále k dispozici pro ty, kdo to skutečně potřebují, a jasně uvádí, že tato funkce obchází plugin.
REST API
POST /wp-json/postviews/v1/post/<id>/view
Na načtení počtu zobrazení není třeba vytvářet samostatnou trasu. Počet je již publikován jako pole views určené pouze pro čtení v základním zdroji příspěvku, takže /wp-json/wp/v2/posts/<id> vrací příspěvek i jeho počet společně a seznam příspěvků obsahuje všechny počty v jedné odpovědi.
To, co pole „core“ nedokáže, je zápis, a právě k tomu slouží tato metoda: počítá počet zobrazení a je určena pro weby, které poskytují stránky z mezipaměti, kde je nutné zaznamenat počet zobrazení až po doručení stránky. Jako parametr nonce přijímá stejný wp_postviews_nonce, jaký je předán počítacímu skriptu.
Požadavek je zamítnut, pokud stránka neodloží počítání — tedy pokud nemá stránkovou mezipaměť a není u ní zapnuta možnost počítání pomocí AJAXu. V opačném případě již bylo zobrazení započítáno při vykreslení stránky a další počítání by vedlo k dvojímu zaznamenání každého zobrazení.
Odmítnutí má kód 403 — nesprávný nonce nebo web, který počítá zobrazení během načítání stránky. Neexistující příspěvek má kód 404.
Tato trasa je nově přidána. Akce admin-ajax.php wp_postviews zůstává beze změny a je i nadále podporována.
Snímky obrazovky




Bloky
Tento plugin poskytuje 1 blok.
- Post Views How many times a post has been viewed, rendered with the stored template.
Instalace
- Nainstalujte a aktivujte plugin. Počítání začne okamžitě; nemusíte nic dělat, aby se čísla zaznamenávala.
- Zobrazte počet zobrazení tam, kde chcete: zadejte do příspěvku
[views], přidejte blok Post Views, přidejte widget nebo zavolejte funkcithe_views()ze svého šablony. - Přejděte na
WP-Admin -> Nastavení -> WP-PostViews, kde si můžete vybrat, koho se má počítat a jak se má počet zobrazovat.
Nejčastější dotazy
-
Jak zobrazit statistiky pomocí widgetů?
-
- Přejděte na
WP-Admin -> Vzhled -> Widgety - Název widgetu je Views.
- Přejděte na
-
Zobrazení příspěvků s nejmenším počtem zhlédnutí
-
<?php if (function_exists('get_least_viewed')): ?> <ul> <?php get_least_viewed(); ?> </ul> <?php endif; ?>- První hodnota, kterou předáte, představuje požadovaný typ příspěvku. Pokud chcete získat všechny typy příspěvků, stačí použít „both“. Podporuje se také pole v PHP: příklad
array('post', 'page'). - Druhou hodnotou, kterou zadáte, je maximální počet příspěvků, které chcete načíst.
- Výchozí nastavení: get_least_viewed(‚both‘, 10);
- První hodnota, kterou předáte, představuje požadovaný typ příspěvku. Pokud chcete získat všechny typy příspěvků, stačí použít „both“. Podporuje se také pole v PHP: příklad
-
Zobrazení nejčtenějších příspěvků
-
<?php if (function_exists('get_most_viewed')): ?> <ul> <?php get_most_viewed(); ?> </ul> <?php endif; ?>- První hodnota, kterou předáte, představuje požadovaný typ příspěvku. Pokud chcete získat všechny typy příspěvků, stačí použít „both“. Podporuje se také pole v PHP: příklad
array('post', 'page'). - Druhou hodnotou, kterou zadáte, je maximální počet příspěvků, které chcete načíst.
- Výchozí nastavení: get_most_viewed(‚both‘, 10);
- První hodnota, kterou předáte, představuje požadovaný typ příspěvku. Pokud chcete získat všechny typy příspěvků, stačí použít „both“. Podporuje se také pole v PHP: příklad
-
Zobrazení příspěvků s nejmenším počtem zobrazení podle štítku
-
<?php if (function_exists('get_least_viewed_tag')): ?> <ul> <?php get_least_viewed_tag(); ?> </ul> <?php endif; ?>- První hodnota, kterou zadáte, je ID značky.
- Druhou hodnotou, kterou předáte, je požadovaný typ příspěvku. Pokud chcete získat všechny typy příspěvků, stačí použít „both“. Podporuje se také pole v PHP: příklad
array('post', 'page'). - Třetí hodnota, kterou zadáte, představuje maximální počet příspěvků, které chcete načíst.
- Výchozí nastavení: get_least_viewed_tag(1, ‚both‘, 10);
-
Zobrazení nejčtenějších příspěvků podle štítku
-
<?php if (function_exists('get_most_viewed_tag')): ?> <ul> <?php get_most_viewed_tag(); ?> </ul> <?php endif; ?>- První hodnota, kterou zadáte, je ID značky.
- Druhou hodnotou, kterou předáte, je požadovaný typ příspěvku. Pokud chcete získat všechny typy příspěvků, stačí použít „both“. Podporuje se také pole v PHP: příklad
array('post', 'page'). - Třetí hodnota, kterou zadáte, představuje maximální počet příspěvků, které chcete načíst.
- Výchozí nastavení: get_most_viewed_tag(1, ‚both‘, 10);
-
Zobrazení příspěvků s nejnižším počtem zobrazení v dané kategorii
-
<?php if (function_exists('get_least_viewed_category')): ?> <ul> <?php get_least_viewed_category(); ?> </ul> <?php endif; ?>- První hodnota, kterou zadáte, je identifikátor kategorie.
- Druhou hodnotou, kterou předáte, je požadovaný typ příspěvku. Pokud chcete získat všechny typy příspěvků, stačí použít „both“. Podporuje se také pole v PHP: příklad
array('post', 'page'). - Třetí hodnota, kterou zadáte, představuje maximální počet příspěvků, které chcete načíst.
- Výchozí nastavení: get_least_viewed_category(1, ‚both‘, 10);
-
Zobrazení nejčtenějších příspěvků v dané kategorii
-
<?php if (function_exists('get_most_viewed_category')): ?> <ul> <?php get_most_viewed_category(); ?> </ul> <?php endif; ?>- První hodnota, kterou zadáte, je identifikátor kategorie.
- Druhou hodnotou, kterou předáte, je požadovaný typ příspěvku. Pokud chcete získat všechny typy příspěvků, stačí použít „both“. Podporuje se také pole v PHP: příklad
array('post', 'page'). - Třetí hodnota, kterou zadáte, představuje maximální počet příspěvků, které chcete načíst.
- Výchozí nastavení: get_most_viewed_category(1, ‚both‘, 10);
-
Seřadit příspěvky podle počtu zobrazení (nejvíce/nejméně)
-
- Můžete použít:
<?php query_posts( array( 'meta_key' => 'views', 'orderby' => 'meta_value_num', 'order' => 'DESC' ) ); ?> - Nebo zadejte proměnné přímo do adresy URL:
https://yoursite.com/?v_sortby=views&v_orderby=desc - Pokud chcete zobrazit příspěvky s nejmenším počtem zobrazení, můžete DESC nahradit ASC.
- Můžete použít:
-
Zobrazení aktuálního počtu zobrazení pomocí LiteSpeed Cache
-
Použití:
<div id="postviews_lscwp"></div>nahraďte<?php if(function_exists('the_views')) { the_views(); } ?>.
POZNÁMKA: ID lze změnit, ale ID prvku div a skript se musí shodovat.Soubor
js/wp-postviews-cache.jstohoto pluginu již odesílá počet zobrazení a přijímá zpět nový počet, takže stačí tento počet zapsat do vašeho divu. Přidejte toto do svého tématu nebo do vlastního malého skriptu, který zařadíte do fronty zawp-postviews-cache:document.addEventListener( 'postviews:updated', function ( event ) { const target = document.getElementById( 'postviews_lscwp' ); if ( target ) { target.textContent = event.detail.views + ' views'; } } );Vyprázdněte mezipaměť, abyste mohli používat aktualizované stránky.
-
Jak získat počet zobrazení pomocí REST API
-
Počet zobrazení příspěvku můžete zjistit tak, že do parametru
_fieldspřidáteviews:
/wp/v2/posts?_fields=views,title -
Can The Settings Screen Be Handed To Another Role?
-
The screen requires
manage_options. Thewp_postviews_capabilityfilter is read
wherever that gate is checked, so a different capability opens it to whoever holds one:add_filter( 'wp_postviews_capability', function () { return 'edit_others_posts'; } );
Recenze
Autoři
WP-PostViews je otevřený software. Následující lidé přispěli k vývoji tohoto pluginu.
SpolupracovníciPlugin „WP-PostViews“ byl přeložen do 19 jazyků. Děkujeme všem překladatelům za jejich pomoc.
Přeložte “WP-PostViews” 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
2.0.1
- NEW: A Settings link on the plugin’s row on the Plugins screen
- FIXED: „Count Views From“ was only honoured while the page rendered. On a cached site the counting happens through a separate AJAX or REST call instead, and that path never asked the setting — so with „Registered Users Only“ a guest hitting a cached page was still counted, and the bot exclusion never applied there either. Both endpoints now check the setting against the actual visitor’s login state
2.0.0
- OPRAVENO: Obě šablony se při ukládání zobrazovaly jako značkovací kód, protože byly zpracovány funkcí
wp_kses_post()– a to platilo pouze pro obrazovku nastavení. Migrace na verzi 2.0.0 probíhá jiným způsobem a řádek, do kterého se šablona začleňuje, pochází z verze, která pole ukládala bez jakéhokoli filtrování, takže škodlivá šablona na webu aktualizovaném z verze 1.78.1 byla přenesena doslovně a zobrazena každému návštěvníkovi. Filtrování se nyní provádí v místě, kde se řádek zapisuje, takže jím projdou i WP-CLI, cron, obnovená záloha a další pluginy. - OPRAVENO: Koncový bod pro odložené počítání kontroloval pouze to, zda ID s názvem něco odpovídá každému řádku v tabulce
wp_posts– revize, automaticky uložené verze, automaticky vytvořené koncepty, přílohy, příspěvky v koši, koncepty, položky menu, opakovaně použitelné bloky. Neověřený volající mohl procházet prostor ID a pro každé z nich zapisovat řádek pohledu, přičemž si přitom mohl přečíst počet nezveřejněných příspěvků. Nyní je vyžadován skutečný, veřejně přístupný příspěvek, což již znala i druhá cesta pro počítání. - OPRAVENO: Počet zobrazení, který není číselnou hodnotou – meta klíč nemá předponu, takže kdokoli, kdo má oprávnění k úpravám příspěvku, jej může zadat do vlastních polí – způsobil v PHP 8 fatální chybu u každého záznamu obsahujícího daný příspěvek, protože oba tokeny pro počítání se generují bez ohledu na to, zda je šablona používá či nikoli
- NOVINKA: Blok editoru Počet zobrazení příspěvku v sekci Widgety. Zobrazuje se na serveru pomocí stejného kódu, jaký používá zkrácený kód, takže blok i zkrácený kód zobrazující stejný příspěvek generují stejné značky a náhled v editoru nikdy nezapočítává zobrazení. Zkrácený kód
[views]zůstává beze změny a je i nadále podporován – není třeba nic převádět a příspěvky, které jej již obsahují, budou i nadále fungovat. - NOVINKA: Příkaz WP-CLI pro
wp postviews—listaget. Příkaz pouze čte, nikdy nezapisuje. - NOVINKA: REST API
postviews/v1s jednou trasou, určené k počítání zobrazení stránky z mezipaměti. Načtení počtu zobrazení již představuje poleviewsv jádrovém zdroji příspěvku. Akcewp_postviewsv souboruadmin-ajax.phpzůstává beze změny a je i nadále podporována. - BREAKING: Requires WordPress 6.8 and PHP 8.2.
- AKTUÁLNÍ ZPRÁVA: Filtr
the_viewsse nyní nazýváwp_postviews_the_views. Šablonový tagthe_views()zůstává beze změny. - AKTUÁLNÍ ZPRÁVA: Filtr
postviews_should_countse nyní nazýváwp_postviews_should_count. - AKTUÁLNÍ ZPRÁVA: Akce
postviews_increment_viewsapostviews_increment_views_ajaxse nyní nazývajíwp_postviews_increment_viewsawp_postviews_increment_views_ajax. - AKTUÁLNÍ ZPRÁVA: Nastavení jsou uložena v tabulce
wp_postviews_optionsnamístoviews_optionsa značky aktualizace v tabulcewp_postviews_versionnamístoviews_version. Obě tabulky jsou migrovány automaticky. - AKTUÁLNÍ ZPRÁVA: Přepínače WP-Stats se přesouvají ze sdílených řádků
stats_displayastats_mostlimitdo vlastních nastavení tohoto pluginu a sdílené řádky jsou odstraněny. Aktualizujte všech sedm pluginů WP-Stats najednou. - AKTUÁLNÍ ZPRÁVA: Třída widgetu
WP_Widget_PostViewsse nyní nazýváWP_PostViews_Widget. Na nakonfigurované widgety to nemá žádný vliv. - AKTUÁLNÍ ZPRÁVA: Akce AJAX, na kterou odesílá data stránka uložená v mezipaměti, je nyní
wp_postviewsnamístopostviews. - AKTUÁLNÍ ZPRÁVA: Šest nastavení v části „Možnosti zobrazení“ – domovská stránka, jednotlivé příspěvky, stránky, archivy, výsledky vyhledávání a další stránky – bylo odstraněno a uložené klíče budou při aktualizaci smazány. Nahradí je filtr
wp_postviews_should_display. - NOVINKA: Přeskupeno do tříd
includes/. Šablonové tagy —the_views(),get_most_viewed(),get_least_viewed()a jejich varianty pro kategorie a štítky — zůstávají beze změny a fungují přesně stejně jako dříve. - NOVINKA: Obrazovka nastavení je nyní založena na rozhraní API nastavení WordPressu a již nenačítá jQuery.
- NOVINKA: Sekce WP-Stats a počet položek v seznamech nejčastěji prohlížených příspěvků se nyní nastavují v části Nastavení -> WP-PostViews.
- NOVINKA: Filtr
wp_postviews_should_displayurčuje, zda se zobrazí počet zobrazení. Tuto hodnotu čte pouze funkcethe_views(); zkrácený kód[views]a sloupec „Zobrazení“ v administraci jsou explicitní požadavky a tento filtr ignorují. - ZMĚNA: Obrazovka nastavení se skládá ze dvou záložek – „Nastavení“ a „Šablony“ – a obsahuje jednu skupinu nastavení a jeden řádek možností.
- ZMĚNA: Obrazovka nastavení nese název „Nastavení zobrazení příspěvků“, což je v souladu s ostatními obrazovkami nastavení v této skupině.
- ZMĚNA: WP-Stats nyní obsahuje jednu sekci „Zobrazení“ namísto tří samostatných panelů, které se daly přepínat, takže seznam nejčastěji prohlížených stránek se zobrazuje vedle seznamu příspěvků.
- OPRAVENO:
%VIEW_COUNT_ROUNDED%určilo jednotku před zaokrouhlením, takže hodnota 999 950 se zobrazovala jako „1000K“ místo „1M“ a hodnota 999 999 999 jako „1000M“ místo „1B“. - OPRAVENO: Názvy byly zkracovány na základě bajtů namísto znaků, protože větev pro vícebajtové znaky byla podmíněna funkcí
MB_OVERLOAD_STRING, kterou PHP 8.0 odstranilo. Názvy v jazycích CJK, u nichž došlo ke zkrácení uprostřed znaku, zcela zmizely ze seznamů nejčastěji a nejméně sledovaných položek. - OPRAVENO: AJAXový koncový bod zaznamenával zobrazení u ID příspěvků, které neexistují, což umožňovalo komukoli neomezeně přidávat řádky do
wp_postmeta. - OPRAVENO:
?v_orderby=ASCse porovnávalo pouze s malými písmeny, takže při použití velkých písmen – což je podle pokynů v sekci Často kladené otázky (FAQ) správný postup – došlo bez upozornění k přepnutí na sestupné řazení, což je opak toho, co bylo požadováno. - OPRAVENO: Widget bez upozornění ignoroval změny provedené v editoru blokových widgetů a v nástroji pro přizpůsobení, protože vyžadoval skryté pole formuláře, které ani jeden z těchto nástrojů neodesílá.
- OPRAVENO: Widget zobrazoval varování ohledně nedefinovaných klíčů pole při vykreslení z editoru blokových widgetů nebo z nástroje pro přizpůsobení.
- OPRAVENO: Při odinstalaci v síti s více než 100 weby zůstávaly na každém webu po stém nastavení a počty zobrazení, přičemž se hlásil úspěch. Aktivace sítě mohla způsobit fatální chybu v odstraněném kódu
wp_get_sites(). - POZNÁMKA: Obrazovka nastavení byla přesunuta z
options-general.php?page=wp-postviews/postviews-options.phpnaoptions-general.php?page=wp-postviews. Aktualizujte všechny záložky; položka nabídky Nastavení -> WP-PostViews zůstala na stejném místě jako dříve. - POZNÁMKA: Šablony se nyní ukládají bez lomítek. Stávající šablony budou automaticky převedeny při prvním načtení verze 2.0.0.
- POZNÁMKA:
should_views_be_displayed(),postviews_round_number()asnippet_text()již nejsou globálními funkcemi. Nikdy nebyly zdokumentovány; nyní se nazývajíWP_PostViews_Display::should_be_displayed(),WP_PostViews_Display::round_number()aWP_PostViews_Display::snippet_text().
