http://lynt.cz
Nejčastější problémy webů na
WordPress
Vláďa Smitka
vladimir.smitka@lynt.cz
@smitka
Lynt services s.r.o.
http://lynt.cz
Dotazy
Sli.do/#WCPHAUSR
18. 2. 2017 2
http://lynt.cz
Drobné problémy
18. 2. 2017 3
http://lynt.cz
Popis webu
18. 2. 2017 4
72 000 výsledků =
stovky stránek
http://lynt.cz
Nekontrolované komentáře
• Ahoj světe - zapomenutý příspěvek - /?p=1
• Vhodné použít antispam plugin
– Akismet (je nutné ho aktivovat!)
– NoSpamNX
18. 2. 2017 5
http://lynt.cz
SEO Pluginy
• Na mnoha webech je nainstalován SEO plugin bez
jakéhokoliv nastavení a není aktivně využíván
• K čemu SEO plugin slouží
– Generuje sitemapu
– Přidává mikrodata (lze částečně řešit v šabloně)
– Nastavuje vazby ve stránkovaném obsahu (lze řešit v šabloně)
– Doplňuje meta tagy pro sociální sítě (lze řešit v šabloně)
– Upravuje podobu titulků (lze řešit v šabloně)
– Upravuje povolení indexace jednotlivých příspěvků (většinou
není třeba)
– Upravuje meta description příspěvků (což může přinést více
škody než užitku, když se to neudělá pořádně)
18. 2. 2017 6
http://lynt.cz
Analytika
• Pokud již řešíte SEO a marketing, musíte vědět
co se na webu děje = mít nasazené analytické
nástroje
• Google Analytics – vložení pluginem, ručně do
šablony nebo pomocí functions.php
• Google Tag Manager -
https://cs.wordpress.org/plugins/duracelltomi
-google-tag-manager/
18. 2. 2017 7
http://lynt.cz
GA kód ve functions.php
function lynt_add_ga() { ?>
//zde vlozit merici kod
<?php }
add_action('wp_footer', 'lynt_add_ga');
18. 2. 2017 8
http://lynt.cz
Pár tipů do GA
18. 2. 2017 9
http://lynt.cz
Odesílání e-mailů
• Odesílání mailů je často nevhodně nastavené
• V základu je používána php funkce mail()
• Na sdíleném hostingu může mít IP adresa
špatnou reputaci – infekce jiných webů, zasílání
newsletterů
• Lepší je nastavit vlastní SMTP server a ideálně pro
newslettery používat specializované služby
• https://cs.wordpress.org/plugins/wp-mail-smtp/
• https://cs.wordpress.org/plugins/postman-smtp/
18. 2. 2017 10
http://lynt.cz
Maily z kontaktních formulářů
(např. Contact Form 7)
18. 2. 2017 11
Problém se SPF (sender policy framework) =
odesílání jménem domény je omezeno jen na
vybrané IP adresy.
Pro odpověď je nutné použít Reply-To hlavičku.
http://lynt.cz
Ověření funkčnosti e-mailů
• Zaslání testovacího mailu na adresu
vygenerovanou na https://www.mail-tester.com/
• Mail není spolehlivá forma komunikace, je
vhodné výstupy z kontaktních formulářů ukládat i
jinak
– https://wordpress.org/plugins/contact-form-7-to-
database-extension/
– (https://github.com/mdsimpson/contact-form-7-to-
database-extension)
– Pro CF7 - https://wordpress.org/plugins/flamingo/
18. 2. 2017 12
http://lynt.cz
SMTP bez pluginu
function lynt_phpmailer( PHPMailer $mail ) {
$mail->Host = 'smpt.server';
$mail->Port = 465;
$mail->SMTPSecure = 'tls';
$mail->Username = 'jmeno';
$mail->Password = 'heslo';
$mail->SMTPAuth = true;
$mail->IsSMTP();
}
add_action( 'phpmailer_init', 'lynt_phpmailer' );
Více nastavení v dokumentaci:
https://github.com/PHPMailer/PHPMailer
18. 2. 2017 13
http://lynt.cz
Bezpečnost
18. 2. 2017 14
http://lynt.cz
1/3 webů nemá poslední záplaty jádra!
18. 2. 2017 15
https://lynt.cz/blog/masivni-unorova-infekce-wordpress-webu-2017
http://lynt.cz
Aktualizace
• Ohromné množství webů nemá aplikovány
aktualizace WP, pluginů a šablon
Každý opensource je třeba
pravidelně aktualizovat!
• WP updates notifier
• Systémy pro hromadnou správu
18. 2. 2017 16
http://lynt.cz
Systémy pro hromadnou správu
• MainWP
• Infinite WP
• WP Remote
• Manage WP
18. 2. 2017 17
Pokud spravujete více než 2
weby, používejte systém pro
hromadnou správu!
http://lynt.cz
Child themes
Nikdy neupravujte šablonu přímo! *
(pokud není na míru/nejedná o starter theme)
• Řešením je vytvořit „child theme“ – nová složka
šablony, kde jsou jen změněné soubory z
rodičovské
• https://www.wplama.cz/jak-vytvorit-child-
theme-a-proc-ji-vyuzivat/
18. 2. 2017 18
http://lynt.cz
Jak na vlastní úpravy
• functions.php v child theme
• Vlastní plugin:
– /wp-content/plugins/moje-upravy/moje-upravy.php
<?php
/*
Plugin Name: Moje upravy
*/
…kod…
18. 2. 2017 19
http://lynt.cz
Základy bezpečnosti
• Limitace chybných přihlášení (je vhodné
využívat bezpečnostní plugin - WordFence)
• Silná hesla + správce hesel
• Správná práva souborů i uživatelů
• Šifrované připojení – HTTPS, VPN
• Pravidelné aktualizace
• Pravidelné zálohy DB i souborů webu
18. 2. 2017 20
http://lynt.cz
Příliš vysoká uživatelská práva
• Nejčastější důvod – menu a widgety může
editovat pouze admin
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );
https://cs.wordpress.org/plugins/user-role-
editor/
18. 2. 2017 21
http://lynt.cz
Hosting / VPS
• Potřebuji hosting, nebo VPS?
• Výhody VPS: lze škálovat výkon
• Nevýhody: na správu jste sami
• Pokud nemáte linux administrátora,
nepouštějte se do VPS
18. 2. 2017 22
http://lynt.cz
Více webů v jednom prostoru
na hostingu/VPS
18. 2. 2017 23
Složkasweby
Web1
Web2
Web3
https://github.com/lynt-smitka/PHP-Mini-File-Browser/blob/master/mfb.php
http://lynt.cz
HTTPS
• Proč mít HTTPS?
– Bezpečně přenášíte data svých návštěvníků
– Nebezpečné sítě nemohou modifikovat váš obsah
– Můžete použít HTTP/2 pro vyšší výkon
– Můžete používat Google Nákupy
• Proč nemít HTTPS?
– Nevím…
18. 2. 2017 24
http://lynt.cz
Nastavení HTTPS
• Oprava absolutních odkazů z http://<muj-web> na
https://<muj-web>
– UPDATE wp_posts SET post_content =
REPLACE(post_content, 'http://<muj-web>',
'https://<muj-web>')
– https://interconnectit.com/products/search-and-replace-
for-wordpress-databases/
– https://cs.wordpress.org/plugins/ssl-insecure-content-
fixer/
18. 2. 2017 25
http://lynt.cz
Nastavení HTTPS
• Test, zda je vše správně nastavené
• https://www.ssllabs.com/ssltest/analyze.html
Nový web spouštějte rovnou na HTTPS
18. 2. 2017 26
http://lynt.cz
Výkon
18. 2. 2017 27
http://lynt.cz
Mnoho zbytečných pluginů
• Více pluginů = větší nároky na správu a snížený
výkon
• Větší riziko bezpečnostních chyb
• Vliv pluginů – test na VPS serveru 1core, 4GB:
– Čistý WP: 16 požadavků/s
– WP + CF7 + JetPack + WPML + Yoast SEO + Slider
revolution: 3 požadavky/s
18. 2. 2017 28
http://lynt.cz
„Zbytečné“ pluginy
• Neaktivovaný Akismet
• Ikonky sociálních sítí - lepší udělat staticky v
šabloně – nemění se
• Slidery – opět lepší staticky, pokud není třeba
často je aktualizovat
• Pluginy s duplicitní funkcionalitou
18. 2. 2017 29
http://lynt.cz
Hledání pomalého pluginu
18. 2. 2017 30
• Zjištění, zda pomalost způsobují skripty na
straně serveru nebo až načítání zdrojů –
Waterfall (vodopádový graf)
• https://gtmetrix.com/
• http://www.webpagetest.org/
• https://tools.pingdom.com/
http://lynt.cz
Waterfall
18. 2. 2017 31
< 2s < 800kB < 50
http://lynt.cz
Hledání pomalého pluginu
• P3 profiler
• Query Monitor
• Blackfire.io
• Nejčastější problémy:
– Mnoho dotazů do DB (nemělo by jich být více než 35)
– Komunikace s externími službami (např. špatně udělaná
kontrola dostupnosti update)
– „Zacyklené“ shortkódy
18. 2. 2017 32
http://lynt.cz
Cachování
• Několik úrovní
• Cache na straně prohlížeče (expires hlavičky)
• Objektová cache (rozšíření PHP + dropin)
– REDIS, APC(u), Xcache, Memcached
• Plně stránková cache
– WP Supercache
– WP Rocket
18. 2. 2017 33
http://lynt.cz
Fonty
• Opravdu potřebujete mít na webu
Google/Typekit font?
• Bezpečné fonty
• Řezy a znakové sady:
čím více, tím větší zdržení načítání
18. 2. 2017 34
http://lynt.cz
Diakritika
18. 2. 2017 35
<link
href="https://fonts.googleapis.com/css?family
=Roboto:400,700&subset=latin-ext"
rel="stylesheet">
http://lynt.cz
Obrázky
• Velké množství
• Zbytečně rozměrné
• Neoptimalizované – velká velikost
• https://tinypng.com/ - vyzkoušejte
• https://wordpress.org/plugins/shortpixel-image-optimiser/
• https://cs.wordpress.org/plugins/tiny-compress-images/
• https://cs.wordpress.org/plugins/ewww-image-optimizer/
18. 2. 2017 36
http://lynt.cz
Úkoly na zítra
• Aktualizujte
• Zazálohujte
• Otestujte rychlost webu
• Otestujte odesílání e-mailů
• Ověřte konfiguraci HTTPS
• Přijďte na Contributing Day ;-)
18. 2. 2017 37
http://lynt.cz
Mé starší přednášky
• Výkon:
– https://www.slideshare.net/vsmitka/vkon-
wordpress
– https://www.slideshare.net/vsmitka/wp-vkon-a-
jeho-profilovn
• Bezpečnost:
– https://www.slideshare.net/vsmitka/wordcamp-
praha-2016-bezpenost-wordpress
– https://www.slideshare.net/vsmitka/bezpenost-
wp-tipy-pro-kadho-wordcamp-praha-2015
18. 2. 2017 38
http://lynt.cz
A to je vše, přátelé.
18. 2. 2017 39
aktualizujte, zálohujte, používejte bezpečnostní plugin, buďte opatrní
Právě dokončuji knihu o WordPress, která vyjde u vydavatelství Grada.

Nejčastejší problémy WordPress webů

  • 1.
    http://lynt.cz Nejčastější problémy webůna WordPress Vláďa Smitka vladimir.smitka@lynt.cz @smitka Lynt services s.r.o.
  • 2.
  • 3.
  • 4.
    http://lynt.cz Popis webu 18. 2.2017 4 72 000 výsledků = stovky stránek
  • 5.
    http://lynt.cz Nekontrolované komentáře • Ahojsvěte - zapomenutý příspěvek - /?p=1 • Vhodné použít antispam plugin – Akismet (je nutné ho aktivovat!) – NoSpamNX 18. 2. 2017 5
  • 6.
    http://lynt.cz SEO Pluginy • Namnoha webech je nainstalován SEO plugin bez jakéhokoliv nastavení a není aktivně využíván • K čemu SEO plugin slouží – Generuje sitemapu – Přidává mikrodata (lze částečně řešit v šabloně) – Nastavuje vazby ve stránkovaném obsahu (lze řešit v šabloně) – Doplňuje meta tagy pro sociální sítě (lze řešit v šabloně) – Upravuje podobu titulků (lze řešit v šabloně) – Upravuje povolení indexace jednotlivých příspěvků (většinou není třeba) – Upravuje meta description příspěvků (což může přinést více škody než užitku, když se to neudělá pořádně) 18. 2. 2017 6
  • 7.
    http://lynt.cz Analytika • Pokud jižřešíte SEO a marketing, musíte vědět co se na webu děje = mít nasazené analytické nástroje • Google Analytics – vložení pluginem, ručně do šablony nebo pomocí functions.php • Google Tag Manager - https://cs.wordpress.org/plugins/duracelltomi -google-tag-manager/ 18. 2. 2017 7
  • 8.
    http://lynt.cz GA kód vefunctions.php function lynt_add_ga() { ?> //zde vlozit merici kod <?php } add_action('wp_footer', 'lynt_add_ga'); 18. 2. 2017 8
  • 9.
  • 10.
    http://lynt.cz Odesílání e-mailů • Odesílánímailů je často nevhodně nastavené • V základu je používána php funkce mail() • Na sdíleném hostingu může mít IP adresa špatnou reputaci – infekce jiných webů, zasílání newsletterů • Lepší je nastavit vlastní SMTP server a ideálně pro newslettery používat specializované služby • https://cs.wordpress.org/plugins/wp-mail-smtp/ • https://cs.wordpress.org/plugins/postman-smtp/ 18. 2. 2017 10
  • 11.
    http://lynt.cz Maily z kontaktníchformulářů (např. Contact Form 7) 18. 2. 2017 11 Problém se SPF (sender policy framework) = odesílání jménem domény je omezeno jen na vybrané IP adresy. Pro odpověď je nutné použít Reply-To hlavičku.
  • 12.
    http://lynt.cz Ověření funkčnosti e-mailů •Zaslání testovacího mailu na adresu vygenerovanou na https://www.mail-tester.com/ • Mail není spolehlivá forma komunikace, je vhodné výstupy z kontaktních formulářů ukládat i jinak – https://wordpress.org/plugins/contact-form-7-to- database-extension/ – (https://github.com/mdsimpson/contact-form-7-to- database-extension) – Pro CF7 - https://wordpress.org/plugins/flamingo/ 18. 2. 2017 12
  • 13.
    http://lynt.cz SMTP bez pluginu functionlynt_phpmailer( PHPMailer $mail ) { $mail->Host = 'smpt.server'; $mail->Port = 465; $mail->SMTPSecure = 'tls'; $mail->Username = 'jmeno'; $mail->Password = 'heslo'; $mail->SMTPAuth = true; $mail->IsSMTP(); } add_action( 'phpmailer_init', 'lynt_phpmailer' ); Více nastavení v dokumentaci: https://github.com/PHPMailer/PHPMailer 18. 2. 2017 13
  • 14.
  • 15.
    http://lynt.cz 1/3 webů nemáposlední záplaty jádra! 18. 2. 2017 15 https://lynt.cz/blog/masivni-unorova-infekce-wordpress-webu-2017
  • 16.
    http://lynt.cz Aktualizace • Ohromné množstvíwebů nemá aplikovány aktualizace WP, pluginů a šablon Každý opensource je třeba pravidelně aktualizovat! • WP updates notifier • Systémy pro hromadnou správu 18. 2. 2017 16
  • 17.
    http://lynt.cz Systémy pro hromadnousprávu • MainWP • Infinite WP • WP Remote • Manage WP 18. 2. 2017 17 Pokud spravujete více než 2 weby, používejte systém pro hromadnou správu!
  • 18.
    http://lynt.cz Child themes Nikdy neupravujtešablonu přímo! * (pokud není na míru/nejedná o starter theme) • Řešením je vytvořit „child theme“ – nová složka šablony, kde jsou jen změněné soubory z rodičovské • https://www.wplama.cz/jak-vytvorit-child- theme-a-proc-ji-vyuzivat/ 18. 2. 2017 18
  • 19.
    http://lynt.cz Jak na vlastníúpravy • functions.php v child theme • Vlastní plugin: – /wp-content/plugins/moje-upravy/moje-upravy.php <?php /* Plugin Name: Moje upravy */ …kod… 18. 2. 2017 19
  • 20.
    http://lynt.cz Základy bezpečnosti • Limitacechybných přihlášení (je vhodné využívat bezpečnostní plugin - WordFence) • Silná hesla + správce hesel • Správná práva souborů i uživatelů • Šifrované připojení – HTTPS, VPN • Pravidelné aktualizace • Pravidelné zálohy DB i souborů webu 18. 2. 2017 20
  • 21.
    http://lynt.cz Příliš vysoká uživatelskápráva • Nejčastější důvod – menu a widgety může editovat pouze admin $role_object = get_role( 'editor' ); $role_object->add_cap( 'edit_theme_options' ); https://cs.wordpress.org/plugins/user-role- editor/ 18. 2. 2017 21
  • 22.
    http://lynt.cz Hosting / VPS •Potřebuji hosting, nebo VPS? • Výhody VPS: lze škálovat výkon • Nevýhody: na správu jste sami • Pokud nemáte linux administrátora, nepouštějte se do VPS 18. 2. 2017 22
  • 23.
    http://lynt.cz Více webů vjednom prostoru na hostingu/VPS 18. 2. 2017 23 Složkasweby Web1 Web2 Web3 https://github.com/lynt-smitka/PHP-Mini-File-Browser/blob/master/mfb.php
  • 24.
    http://lynt.cz HTTPS • Proč mítHTTPS? – Bezpečně přenášíte data svých návštěvníků – Nebezpečné sítě nemohou modifikovat váš obsah – Můžete použít HTTP/2 pro vyšší výkon – Můžete používat Google Nákupy • Proč nemít HTTPS? – Nevím… 18. 2. 2017 24
  • 25.
    http://lynt.cz Nastavení HTTPS • Opravaabsolutních odkazů z http://<muj-web> na https://<muj-web> – UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://<muj-web>', 'https://<muj-web>') – https://interconnectit.com/products/search-and-replace- for-wordpress-databases/ – https://cs.wordpress.org/plugins/ssl-insecure-content- fixer/ 18. 2. 2017 25
  • 26.
    http://lynt.cz Nastavení HTTPS • Test,zda je vše správně nastavené • https://www.ssllabs.com/ssltest/analyze.html Nový web spouštějte rovnou na HTTPS 18. 2. 2017 26
  • 27.
  • 28.
    http://lynt.cz Mnoho zbytečných pluginů •Více pluginů = větší nároky na správu a snížený výkon • Větší riziko bezpečnostních chyb • Vliv pluginů – test na VPS serveru 1core, 4GB: – Čistý WP: 16 požadavků/s – WP + CF7 + JetPack + WPML + Yoast SEO + Slider revolution: 3 požadavky/s 18. 2. 2017 28
  • 29.
    http://lynt.cz „Zbytečné“ pluginy • NeaktivovanýAkismet • Ikonky sociálních sítí - lepší udělat staticky v šabloně – nemění se • Slidery – opět lepší staticky, pokud není třeba často je aktualizovat • Pluginy s duplicitní funkcionalitou 18. 2. 2017 29
  • 30.
    http://lynt.cz Hledání pomalého pluginu 18.2. 2017 30 • Zjištění, zda pomalost způsobují skripty na straně serveru nebo až načítání zdrojů – Waterfall (vodopádový graf) • https://gtmetrix.com/ • http://www.webpagetest.org/ • https://tools.pingdom.com/
  • 31.
  • 32.
    http://lynt.cz Hledání pomalého pluginu •P3 profiler • Query Monitor • Blackfire.io • Nejčastější problémy: – Mnoho dotazů do DB (nemělo by jich být více než 35) – Komunikace s externími službami (např. špatně udělaná kontrola dostupnosti update) – „Zacyklené“ shortkódy 18. 2. 2017 32
  • 33.
    http://lynt.cz Cachování • Několik úrovní •Cache na straně prohlížeče (expires hlavičky) • Objektová cache (rozšíření PHP + dropin) – REDIS, APC(u), Xcache, Memcached • Plně stránková cache – WP Supercache – WP Rocket 18. 2. 2017 33
  • 34.
    http://lynt.cz Fonty • Opravdu potřebujetemít na webu Google/Typekit font? • Bezpečné fonty • Řezy a znakové sady: čím více, tím větší zdržení načítání 18. 2. 2017 34
  • 35.
    http://lynt.cz Diakritika 18. 2. 201735 <link href="https://fonts.googleapis.com/css?family =Roboto:400,700&subset=latin-ext" rel="stylesheet">
  • 36.
    http://lynt.cz Obrázky • Velké množství •Zbytečně rozměrné • Neoptimalizované – velká velikost • https://tinypng.com/ - vyzkoušejte • https://wordpress.org/plugins/shortpixel-image-optimiser/ • https://cs.wordpress.org/plugins/tiny-compress-images/ • https://cs.wordpress.org/plugins/ewww-image-optimizer/ 18. 2. 2017 36
  • 37.
    http://lynt.cz Úkoly na zítra •Aktualizujte • Zazálohujte • Otestujte rychlost webu • Otestujte odesílání e-mailů • Ověřte konfiguraci HTTPS • Přijďte na Contributing Day ;-) 18. 2. 2017 37
  • 38.
    http://lynt.cz Mé starší přednášky •Výkon: – https://www.slideshare.net/vsmitka/vkon- wordpress – https://www.slideshare.net/vsmitka/wp-vkon-a- jeho-profilovn • Bezpečnost: – https://www.slideshare.net/vsmitka/wordcamp- praha-2016-bezpenost-wordpress – https://www.slideshare.net/vsmitka/bezpenost- wp-tipy-pro-kadho-wordcamp-praha-2015 18. 2. 2017 38
  • 39.
    http://lynt.cz A to jevše, přátelé. 18. 2. 2017 39 aktualizujte, zálohujte, používejte bezpečnostní plugin, buďte opatrní Právě dokončuji knihu o WordPress, která vyjde u vydavatelství Grada.