18 Kwi 2019

Kolumny w css oraz szukanie w html

Powiedzmy że mamy bardzo długą listę linków. Chciałbym aby ta lista łamała się na 2, 3 a może więcej kolumn. W naszym przykładzie lista będzie składać się z 20 elementów.

Taką listę można uzyskać przez emmet aby nie klepać tego samodzielnie wystarczy wpisać ul#ul>li{text $}*20

<ul id="ul">
  <li>text 1</li>
  <li>text 2</li>
  <li>text 3</li>
  <li>text 4</li>
  <li>text 5</li>
  <li>text 6</li>
  <li>text 7</li>
  <li>text 8</li>
  <li>text 9</li>
  <li>text 10</li>
  ...
</ul>

Chciałby aby ta lista została podzielona na dwie kolumny. Do tego użyjemy column-count Które jest wpierane nawet przez IE od wersji 10
Oczywiście też trochę upiększymy wygląd naszej listy.

ul {
  border: 1px solid #cacaca;
  list-style: none;
  max-width: 50%;
  margin: 0;
  padding: 0;
  column-count: 2;
  column-width: 50%;
  padding: 10px;
  margin: auto;
}

ul li {
  padding: 10px;
  margin-bottom: 2px;
}

ul li:nth-child(even) {
  background-color: #f0f0f0;
}
14 Kwi 2019

Optymalizacja wordpress – pobranie js i css z hash

W poście poniżej opisałem jak usunąć „?ver” ze statycznych linków – [ tutaj ]
Po tej zmianie pojawił się problem z „cashowaniem” plików. Rozwiązanie jest dość proste.

W związku z tym że do generowania plików użyty został „gulp” oraz biblioteka „gulp-rev” za pomącą której do nazw plików dodany jest hash – style-ecf06381de.css

Problem jaki napotykamy to jak wczytać pliki css i js w wordpressie, które za każdym razem gdy zmieniamy coś we frontendzie mają inną nazwę.
Na potrzeby tego bloga stworzyłem poniższą funkcję.

/**
 * match file name
 */

function kodywig_matchFile($partOfName, $folder)
{
  $handler = get_template_directory() . '/assets/' . $folder;
    $openHandler = opendir($handler);
    while ($file = readdir($openHandler)) {
      if ($file !== '.' && $file !== '..') {
        if (preg_match("/^" . $partOfName . "\w+.(" . $folder . ")/i", $file, $name)) {
    return $name[0];
  }
      }
    }
    closedir($openHandler);
}

Do powyższej funkcji przekazywane są dwa parametry, pierwszy $partOfName czyli cześć nazwy. Drugi parametr $folder czyli gdzie znajduje się nasz plik css|js

Najpierw budujemy ścieżkę do folderu, później w pętli wyciągamy nazwę pliku przez preg_match i zwracamy nazwę z dopasowania.

14 Kwi 2019

Optymalizacja wordpress – usunięcie „query stirngs” ze statycznych linków

Następny kod do przyspieszenia wordpressa.
Kod umieszczamy w pliku z funkcjami np. w functions.php

Polecam sprawdzić stronę przed oraz po modyfikacji na [ GTmetrix ] oraz [ Google pagespeed ]

function kodywig_remove_css_js_ver($src)
{
  if (strpos($src, '?ver='))
    $src = remove_query_arg('ver', $src);
  return $src;
}
add_filter('style_loader_src', 'kodywig_remove_css_js_ver', 10, 2);
add_filter('script_loader_src', 'kodywig_remove_css_js_ver', 10, 2);
14 Kwi 2019

Google AdSense, wiele reklam – optymalizacja kodu

Najpierw zadajmy sobie pytanie. Ile reklam chcemy umieścić na stornie, jeżeli więcej niż jedną to zapewniam warto przeczytać poniższy tekst 😉
Na stornie Google AdSense kod wygenerowany zawsze wygląda podobnie jak ten poniżej.

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- SiteName -->
<ins class="adsbygoogle"
 style="display:block;"
 data-ad-client="pub-111111111111111"
 data-ad-slot="2222222222"  
 data-ad-width="250"
 data-ad-height="250"></ins>
<script>
  (adsbygoogle = window.adsbygoogle || []).push({});  });
</script>

Problem jaki występuje przy większej liczbie reklam to to że wywołujemy kilka razy tę samą stronę, a to ma bardzo duże znaczenie przy optymalizacji strony i szybkości jej działania.
Najprostszym rozwiązaniem jest oczywiście wywołanie tylko raz 🙂

Poniższy kod dodajemy w te miejsca w których chcemy aby się wyświetliły reklamy ale w takiej formie „okrojonej” – oczywiście Twój kod powinien mieć odpowiednie ad-client, ad-slot oraz podane wymiary tkaie jakie chcesz mieć w reklamie”).

<ins class="adsbygoogle"
  style="display:block;"
  data-ad-client="pub-111111111111111"
  data-ad-slot="2222222222"  
  data-ad-width="250"
  data-ad-height="250"></ins>

Teraz najważniejsza część. Na dole stromy przed zamknięciem

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
   [].forEach.call(document.querySelectorAll('.adsbygoogle'), function(){
      (adsbygoogle = window.adsbygoogle || []).push({});  
   });
</script>

Sięgamy tylko raz do google, ale wywołujemy wszystkie reklamy tak jak poprzednio.
Poniższe rozwiązanie jest umieszczone na tej stronie, wystarczy podglądnąć kod 😉

11 Kwi 2019

Optymalizacja wordpress – asynchroniczność js

Zaczynamy od dodania kodu np. w function.php

function kodywig_async_scripts($url)
{
  if (strpos($url, '#asyncload') === false)
    return $url;
  else if (is_admin())
    return str_replace('#asyncload', '', $url);
  else
    return str_replace('#asyncload', '', $url) . "' async='async";
}
add_filter('clean_url', 'kodywig_async_scripts', 11, 1);

Później w miejscu w którym dodawane są skrypty i css do strony, odpowiednio modyfikuję kod. Do kodu a dokładnie za .js dodaję #asyncload

wp_enqueue_script('kodywig-script-js', get_template_directory_uri() . '/assets/js/script-min.js#asyncload', array(), KODYWIG_THEME_VERSION, true);