Š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#2918: Jak z WordPressu smazat všechna média?
V rámci úklidu na rychlofky (#tyden) to nebylo jenom o smazání záplavy příspěvků, ale také prakticky všech médií (attachments), které ty příspěvky měly. Související příspěvky TIP#774: Má smysl si na WordPress.com zapínat…
-
TIP#2907: Jak ve WordPressu smazat velké množství příspěvků? Ideálně všechny?
V době kdy #tyden měl webovou verzi se na rychlofky.cz nashromáždilo dobrých 12 tisíc (velmi krátkých) příspěvků. Roky starých a také nenavštěvovaných, Google (vyhledávače) nemají rády krátké příspěvky a neumístí je do…
-
TIP#2871: WordPress a jak docílit toho, aby obrázky v příspěvcích měly stín?
Chcete trochu vylepšit příliš plochý design článků a svého webu na WordPressu? Můžete to udělat tak, že obrázky opatříte stínem. Budou vystupovat z jinak plochého článku a vylepší jeho čitelnost. Související příspěvky…
-
TIP#2807: Bit.ly zavádí reklamu a splash screen? Co s tím? Jak na vlastní zkracovač?
Bit.ly, jeden z mála původních a široce rozšířených zkracovačů adres (URI) za pár měsíců zavede zobrazování reklamy pro ty, kdo kliknou na bit-ly odkaz. Doposud to fungovalo aniž by kliknutí bylo jakkoliv…
-
TIP#2799: Sdílíte nějaký odkaz? Měli byste ho vyčistit od věcí, které tam nemají zůstat
Zapeklitá záležitost, něco jste si otevřeli na Internetu nebo v aplikaci a chcete to nasdílet pomocí odkazu (link). V mnoha případech se k odkazu samotnému přidá řada dalších zbytečných věcí. Někde, třeba…
-
TIP#2791: Mám na webu WordPress v “anglické” verzi, je bezpečné přeinstalovat (změnit) na cs_CZ (či opačně)?
Může se vám to stát velmi lehce a možná si toho ani nevšimnete. Máte českou verzi WordPressu a při některé z aktualizaci si nevšimnete, že vám vlastně nenabízí českou, ale anglickou. To…
-
TIP#2753: Proč mi aktualizace WordPressu cs_CZ (českého) nabízí aktualizace na en_US?
Právě teď je to aktuální. Objevil se WordPress 6.6 a pro všechny weby s cs_CZ to nabízí (a vlastně i dost vnucuje) aktualizaci na tuto verzi, jenže en_US. Související příspěvky TIP#2554: Potřebujete…
-
TIP#2733: Vývojová prostředí pro lokální vývoj pro WordPress (a webdesign vůbec)
Lokální vývojové prostředí vám umožní na vašem lokálním stroji mít vše co potřebujete pro provozování webu (s WordPressem, ale může to být i cokoliv jiného) – tedy web server (Apache, například), SQL…
-
TIP#2592: Ještě stále máte na webu Google AMP? Je to zlo, rychle s tím pryč
Je to vlastně už docela dlouho, co jsem na všech mých webech zrušil podporu Google AMP. Pak jsem delší dobu chtěl napsat tip tomu věnovaný, ale nějak to zapadlo v záplavě jiných…
-
TIP#2554: Potřebujete vyměnit obrázek v médiích na vašem WordPressu? Je nutné mít plugin
Jedna z věcí, kterou (neznámo proč) WordPress neumí přímo. Můžete nahrát média (obrázek, fotku, atd) ale když chcete nahrát upravenou verzi, tak to není možné. Přitom je to dost zásadní věc, kterou…
-
TIP#2548: Jak synchronizovat (zálohovat) web přístupný přes FTP na disk ve Windows?
Taková ta úplně klasická věc. Máte někde webový server (třeba právě jako 365tipu.cz) a je dostupný jen přes FTP (SFTP). Chcete si ho zálohovat na disk ve Windows (ať už lokální nebo…
-
TIP#2533: Jak získat štítky z WordPressu pomocí vlastního PHP
Když už byla řeč o tom jak analyzovat duplicitní štítky, tak je vhodné ještě přidat možnost jak exportovat štítky z WordPressu pomocí PHP. Předpokládá to, že máte přístup k vašemu hostingu a…
-
TIP#2514: Jak ve WordPressu deaktivovat plugin bez přístupu k WP-Admin
Tohle je snadné, ale musíte mít přístup k vašemu hostingu, tedy většinou FTP/SFTP přístup, ale může to být SSH. Prostě tak, abyste se dostali k souborům. Související příspěvky TIP#2495: Mohu z mého…