WP-PostViews

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 views a 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

  1. Nainstalujte a aktivujte plugin. Počítání začne okamžitě; nemusíte nic dělat, aby se čísla zaznamenávala.
  2. Zobrazte počet zobrazení tam, kde chcete: zadejte do příspěvku [views], přidejte blok Post Views, přidejte widget nebo zavolejte funkci the_views() ze svého šablony.
  3. 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.

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);

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);

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.

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.js tohoto 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 za wp-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 _fields přidáte views:
/wp/v2/posts?_fields=views,title

Can The Settings Screen Be Handed To Another Role?

The screen requires manage_options. The wp_postviews_capability filter 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

21. 10. 2025
I’ve been using WP-PostViews for some time now, and it’s a very straightforward and effective plugin for displaying post views. The settings to count views only from guests and exclude bots work well. However, I’ve noticed that if a guest refreshes a page multiple times, each refresh is counted as a new view. While this is typical behavior for a basic hit counter, it makes the view count less representative of actual unique visitors. I would highly recommend considering an enhancement to include an option to count unique views based on IP address (e.g., once per IP within a specified timeframe like 24 hours). This would significantly improve the accuracy of the statistics and make the plugin even more valuable for site owners who want to track genuine reader engagement. Thank you for this plugin!
26. 4. 2024
Have been using this a while along side Advanced Queries and Elementors Loop widget to display a list grid of most popular articles on a website. Doesnt seem to be working anymore. I think its still keeping count of the post views, but the views template variable isnt pulling in the correct posts. From the posts it is showing it looked like it stopped updating in January of this year. Will need to find another solution!
6. 12. 2021
This is the Plugin that I was looking for. Thanks a lot!
Přečtěte si všech 65 recenzí

Autoři

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

Spolupracovníci

Plugin „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 postviewslist a get. Příkaz pouze čte, nikdy nezapisuje.
  • NOVINKA: REST API postviews/v1 s jednou trasou, určené k počítání zobrazení stránky z mezipaměti. Načtení počtu zobrazení již představuje pole views v jádrovém zdroji příspěvku. Akce wp_postviews v souboru admin-ajax.php zů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_views se nyní nazývá wp_postviews_the_views. Šablonový tag the_views() zůstává beze změny.
  • AKTUÁLNÍ ZPRÁVA: Filtr postviews_should_count se nyní nazývá wp_postviews_should_count.
  • AKTUÁLNÍ ZPRÁVA: Akce postviews_increment_views a postviews_increment_views_ajax se nyní nazývají wp_postviews_increment_views a wp_postviews_increment_views_ajax.
  • AKTUÁLNÍ ZPRÁVA: Nastavení jsou uložena v tabulce wp_postviews_options namísto views_options a značky aktualizace v tabulce wp_postviews_version namísto views_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_display a stats_mostlimit do 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_PostViews se 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_postviews namísto postviews.
  • 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_display určuje, zda se zobrazí počet zobrazení. Tuto hodnotu čte pouze funkce the_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=ASC se 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.php na options-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() a snippet_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() a WP_PostViews_Display::snippet_text().