Štítky ve WordPressu jsou tak trochu peklo. Nejen že je třeba je udržovat tak abyste neměli zbytečné štítky (takové co mají žádné nebo minimum článků), ale velmi snadno vznikají různorodé “duplicity”. Hlavně tak že zadáte štítek jinak, než jste ho dříve zadali. Nebo při zadávání překlepem vznikne jiná forma.
Jednou za čas se vyplatí čistit takto “duplicitní” štítky – zrušit špatný a převést k němu přiřazené články na správnou firmu není až tak problém, v tom vám pomůže TaxoPress plugin. Umí totiž Merge/Rename kdy prostě ukážete na špatný štítek a pak vyberete ten správný a vše přiřazené k špatnému převede na nový.
Problém je, že TaxoPress neumí hledat duplikáty. A nevypadá to, že by existoval plugin, který by to uměl – hlavně s fuzzy logikou, tedy zohledňoval překlepy, chybějící znaky, prohozená slova.
TIP: Jak pracovat se štítky u článků? Kompletní návod jak na štítky u obsahového webu (1) je počáteční díl velmi užitečné série tipů popisující jak pracovat se štítky
Pomůže AI
Vydal jsem se zkoušet Bard se zadáním “I have csv file with strings (tags from wordpress) and i need to find duplicates in them, can you help me?“ a postupnou konverzací jsme došli ke skriptu v Pythonu. Ten si můžete pustit v počítači, nebo v něčem jako Google Colab.
V Pythonu můžete využít knihovnu fuzzywuzzy vhodnou právě k nalézání fuzzy duplikátů. A výsledný kód najdete o kousek níže. Počítá s tím, že na vstupu bude mít v tags.csv export tagů (uložte jako ANSI) a výstup, tedy přehled duplicit uloží do duplicate.csv
import fuzzywuzzy.fuzz as fuzz
import csv
def is_duplicate(tag1, tag2):
if tag1 == tag2:
return False
else:
return fuzz.ratio(tag1, tag2) > 90
def find_duplicates(tags):
duplicates = []
for tag1 in tags:
for tag2 in tags:
if is_duplicate(tag1, tag2):
duplicates.append((tag1, tag2))
return duplicates
# Read the CSV file into a list of tags
tags = []
with open('tags.csv', 'r') as f:
for line in f:
tags.append(line.strip())
# Find non-exact duplicates
duplicates = find_duplicates(tags)
# Save the results to a CSV file
with open('duplicates.csv', 'w', newline='') as f:
writer = csv.writer(f)
for duplicate in duplicates:
writer.writerow(duplicate)
Aby to fungovalo, tak budete potřebovat nainstalovat onu výše zmíněnou knihovnu, tj:
pip install fuzzywuzzy
a vyplatí se nainstalovat i další knihovnu, která vše výrazně zrychlí
pip install python-Levenshtein
Získat štítky z WordPressu
Ještě před tím vším ale musíte z vašeho WordPressu dostat štítky – to jde nejlépe udělat v nějakém tom Admineru či phpMyAdmin kde spustíte SQL dotaz
SELECT name FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'post_tag');
Získaný výstup pak pomoci export uložíte do tags.csv – případně pře uložení do ANSI ve Windows snadno v Notepadu – otevřete, dáte Uložit Jako a dole vyberete kódování.
Zpracování je už jen na vás
Výsledek v duplicates.csv si pak můžete otevřít (Excel, Google Sheets, atd) a jít řádku po řádce nalezených duplicit – v TaxoPress pak můžete snadno v Manage Terms -> Merge Terms zvolit nejprve špatnou a poté dobrou formu a nechat spojit. Dost se hodí našeptávač.

Jak vypadá výstup vidíte níže (z FeedIT.cz). Je dost jisté, že některé z duplicit nezjistí, ale to můžete ovlivnit i volbou fuzz.ratio ve skriptu. Ne vše také musí být duplicity – Adastra a Aastra jsou dva správné štítky. Proto je nutné aby výsledek zpracovával člověk.

Mimochodem, ten zvláštní duplikát na řádku 17/19 kde jsou v názvu otazníky je způsobeny tím, že otazníky jsou ‌ (tzv. zero-width non-joiner) – v tomto konkrétním případě je asi někdo (dost zbytečně) použil v tiskové zprávě a přes copy/paste pak došlo k vytvoření štítku – jde o neviditelné znaky, takže ve WordPressu je neuvidíte.
FeedIT.cz má přes 5 tisíc štítků – výše uvedený skript našel zhruba 200 duplikátů.
Další tipy týkající se WordPressu
-
TIP#2093: Jak na vyhledávání na webu s WordPressem? Co vás čeká za komplikace?
Vyhledávání je přímo součást WordPressu a funguje poměrně dobře až do momentu, kdy váš web či blog začne mít tisíce článků (příspěvků). U desítek tisíc pak velmi rychle poznáte, že je hledání…
-
TIP#2088: Co udělat na WordPressu, pokud vypnete podporu AMP?
Při přestěhování FitTipy.cz z WordPress.com na vlastní WordPress nedošlo k přidání podpory pro Google AMP (na WordPress.com je automatický, na vlastním musíte přidávat přes plugin, AMP od Google nebo AMP for WP…
-
TIP#2083: Co ze složek na vašem WordPressu vyjmout ze zálohování? Které zálohovat?
Pokud si sami hostujete WordPress tak asi víte, že na disku má určitou strukturu složek. A pokud si nechcete zálohovat zbytečné věci, tak některé z nich můžete ze zálohování vyjmout. Zejména se…
-
TIP#2079: Co je to WordPress Recovery mode a jak pomůže, když se něco rozbije?
Něco se na vašem WordPressu rozbije velmi snadno. Nejčastěji při aktualizaci pluginu/šablony, kdy dorazí nová verze s chybou. V dobách dřívějších to znamenalo se dostat na hosting (přes FTP, například) a ideálně…
-
TIP#2074: Aktualizace WordPressu, jak na to? Mám nechat automaticky aktualizovat? Jak s pluginy a šablonou?
Aktualizovat samotný WordPress (váš vlastní, toto neplatí pro weby na WordPress.com) a samozřejmě i pluginy či šablony je velmi důležité v okamžiku, kdy se objeví nějaká bezpečnostní chyba a vašem webu tak…
-
TIP#2068: Jak zjistím jaké Bloky jsou k dispozici na mém WordPressu?
Možná jste si pořídili nějaké pluginy co přidávají Bloky použitelné v Guttenberg editoru nebo widgetovch oblastech. A chcete se podívat co všechno tak vlastně vaše instalace WordPressu umí. Související příspěvky TIP#804: Jak…
-
TIP#2058: Odpojuje se vám FTP klient ve Windows od serveru? Tady je řešení
Po migraci několika WordPressů na Blueboard jsem narazil na problém s přístupem přes FTP. WinSCP se při přenosech, ale třeba i při procházení složek nebo mazání většího množství souborů odpojovalo od serveru.…
-
TIP#2050: Co dělat, když vám na WordPress hostingu dochází prostor pro databází
Řada dnešních hostingů pro WordPress nabízí neomezený (nebo hodně dostatečný) prostor pro soubory, ale omezenější prostor pro databázi (SQL). Co dělat když vám dochází místo v databází? Související příspěvky TIP#804: Jak migrovat…
-
TIP#2045: Jak na webu na WordPressu zacházet s pluginy? Méně je více
Jedno z důležitých pravidel pro weby na WordPressu? Nenechávejte na webu zbytečné pluginy. Nejen že nenechávejte aktivní, ale nenechávejte je tam vůbec. Související příspěvky TIP#804: Jak migrovat web z WordPress.org na WordPress.com?…
-
TIP#2043: Jak na WordPressu vytvořit Sitemapu? Nejlepší pluginy pro sitemap.xml
Sitemapu (sitemap.xml) vám váš vlastní WordPress nevytvoří (WordPress.com ano), takže si musíte pořídit nějaký plugin, který to umí – například All in One SEO, a další, viz dále. Ručně ji totiž zcela…
-
TIP#2040: Jak na vlastní WordPress. Jak funguje Export a k čemu je použitelný
Export najdete ve WordPressu vlastním (.org) i WordPress.com v Nástroje -> Export/Exportovat. V tom vlastním se provedením trochu vzhledově liší od toho ve WordPress.com, ale funkčnost je stejná. Poněkud komplikovaná, protože je…
-
TIP#2020: Jak ve Wordu a Dokumentech Google přeškrtnout text? A nejenom tam …
Začátečnický tip? Samozřejmě, proč ne! Je hodně lidí co prostě neví i takové ty běžné věci. Jako třeba že Ctrl+C a Ctrl+V jsou dvě hodně užitečné klávesové zkratky. A tak nemusí tušit,…
-
TIP#2015: Jak na vlastní WordPress. Nepostradatelné pluginy pro WordPress
Po migraci z WordPress.com na BlueBoard je samozřejmě nutné se podívat po různých velmi důležitých pluginech (a také středně užitečných pluginech). Musí zajistit to co umí přímo WordPress.com (mají tam vlastní sady…
-
TIP#2011: Jak na vlastní WordPress. Migrace z WordPress.com na BlueBoard
Před pár týdny přišel čas zaplatit na další rok jeden z hostingů u WordPress.com a s tím i obvyklé přemýšlení, jestli zase nezkusit vlastní WordPress. Ne pro 365tipu.cz, to je docela dost…
-
TIP#1763: Jak na web vkládat obrázky. Co všechno byste měli vědět. Nejen o velikosti a rozměrech
Jedna z nejvíce problematických věci při tvorbě obsahu na webu, ať už jsou to blogy nebo weby jako takové. Je totiž bohužel zcela běžné, že na webech a blozích najdete zcela špatně…

















