Jak usunąć klasę „hentry” z WordPress?

W wordpress’owym szablonie single.php, który odpowiada za wyświetlenie pojedynczego wpisu używana często jest funkcja

post_class();

Funkcja ta generuje szereg klas typu:

class="post-395 post type-post status-publish format-standard hentry category-sample category-wyroznione"

Konflikt Rich Snippets

Klasy te często są przydatne i na części z nich z pewnością opierają się definicje CSS. Problem w tym, że jeżeli na blogu posiadamy zaimplementowane Google Rich Snippets w formacie innym niż microformats to klasa „hentry” będzie powodować błędy widoczne na screenie. Czytaj dalej „Jak usunąć klasę „hentry” z WordPress?”

Jak w WordPress usunąć rel=”next” i rel=”prev”?

Według wytycznych Google atrybuty znacznika LINK rel=”next” i rel=”prev” znajdujące się w sekcji HEAD służą do wskazywania zależności pomiędzy stronami na liście stron… czyli opisują pozycje w pagerze. Jest to istotna podpowiedź na temat duplikacji oraz zależności treści w serwisie i wpływa pozytywnie na SEO.

Duże było moje zdziwienie gdy niedawno odkryłem, że WordPress standardowo wstawia te atrybuty na stronach ze szczegółami wpisu wstawiając w nich linki do następnego i poprzedniego (w kontekście daty publikacji) wpisu. Każdy post jest unikalny, posiada unikalny adres url i zazwyczaj nie jest semantycznie powiązany z następnym/poprzednim.

Wpisy z rel=”next” i rel=”prev” powinny być na stronie z listą wpisów w kategorii gdzie mamy stronicowanie, natomiast na stronach ze szczegółami wpisu znaczniki te są kompletnie niepotrzebne i mogą powodować jedynie zamieszanie.. Czytaj dalej „Jak w WordPress usunąć rel=”next” i rel=”prev”?”

Instalacja Apache 2.4 + PHP 5.4 pod Windows 7

Z pewnością w necie znajduje się już wiele poradników w temacie instalacji i konfiguracji PHP + Apache, jednak nie zawsze zawierają wszelkie niezbędne informacje. Wczoraj sam przebrnąłem przez proces aktualizacji z Apache 2.2 i PHP 5.2 do Apache 2.4 + PHP 5.4 co defakto oznaczało ponowną instalacją i konfiguracją tych dwóch softów. Czytaj dalej „Instalacja Apache 2.4 + PHP 5.4 pod Windows 7”

Sprawdzanie permutacji ciągu znaków w PostgreSQL

Permutacja w języku matematycznym to „wzajemnie jednoznaczne przekształcenie pewnego zbioru na siebie”. Używając języka mniej technicznego permutacje, na przykładzie liter w słowie, to wszystkie możliwe ustawienia literek w słowie, zatem dla słowa „marcin” permutacjami będą: „amrcin”, „mracin”, „mrcain” etc… w słowie 6 znakowym będzie ich łącznie 6!.

Problem

W bazie danych mamy pole tekstowe z zapisanymi pewnymi ciągami znaków, chcemy sprawdzić te dane pod kątem występowania w nich permutacji pewnego stringu. Czyli mając w danych wejściowych np. „mrcain” chcemy sprawdzić czy w bazie nie ma „marcin” lub innej permutacji. Czytaj dalej „Sprawdzanie permutacji ciągu znaków w PostgreSQL”

Gdy tagi og:meta nie działają wyczyść Facebook’owi cache

Jeżeli masz na stronie wstawione facebook’owe buttony share lub like bez zdefiniowanych tagów open graph to wraz z publikacją polubionej strony na fejsie pojawiają się dane losowe dane wybrane z witryny.

Używając tagów og: meta możesz dokładne zdefiniować, które dane mają się pojawić na FB:

    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# 
                  website: http://ogp.me/ns/website#">

     <meta property="og:type"                 content="website"> 
     <meta property="og:url"                  content="URL of this object"> 
     <meta property="og:image"                content="URL to an image">
     <meta property="og:title"                content="Name of blog">
     <meta property="og:description"          content="Description of object"> 

To oczywiste! Jednak jeżeli link do strony był już wcześniej share’owany na fejsie, to znajduje się on w cache facebooka i pomimo wstawienia tagów na stronę, kliknięcia i shary w dalszym ciągu będą postować na FB złą treść.

Taka sytuacja prowadzi jedynie do irytacji i szukania błędów w czymś co przecież powinno działać :-)

Aby przeczyścić cache należy wejść na stronę Facebook Lint, wkleić testowany adres z tagami og: meta i zdebugować. W tym momencie cache facebooka zostanie natychmiast przeładowany, dodatkowo w narzędziu debugującym możesz podejrzeć, które dane będą publikowane.

Systemy autonomiczne (ASy)

O tym, że w walce z Google o wysokie pozycje w SERP’ach liczy się coraz więcej niuansów wiadomo nie od dzisiaj, Google zbiera dane o nas i o naszych serwisach próbując powiązać zapleczówki z serwisami pozycjonowanymi.

Im lepiej rozłożymy zaplecza i im mniej dostarczymy danych wujkowi Guglowi tym większą szansę mamy na osiągnięcie upragnionego TOP 3.

O tym czym są systemy autonomiczne i dlaczego warto brać je pod uwagę możecie przeczytać na Sprawnym Marketingu w artykule Ile masz ASów w rękawie? Inne spojrzenie na adresy IP i hosting SEO.

Po lekturze należy zadać sobie pytania:

  • Na ilu AS’ach stoi moje zaplecze?
  • Na jakie hostingi/IPki przenieść lub rozbudować zaplecze aby zwiększyć liczbę AS’ów?

Czytaj dalej „Systemy autonomiczne (ASy)”

Hosting SEO tylko nie w hosting.seo-linuxpl.com!

Nie jestem zwolennikiem wygłaszania negatywnych opinii na temat produktów czy usług, wolę wyłapywać i opisywać te ciekawe i pozytywne tematy niż wywlekać brudy i żalić się na źle/nie działające rzeczy.

Niestety tym razem zostałem zmuszony zrobić wyjątek, gdyż to co się dzieje od kilku miesięcy na jednym z polskich SEO hostingów woła o pomstę do nieba i warto o tym wspomnieć chociażby ku przestrodze. Chodzi o linuxpl.com i ich pseudo „SEO hosting” hosting.seo-linuxpl.com, gdzie mam nieprzyjemność administrować jeden serwer od jakiegoś czasu.

Miłe złego początki

Na dzień dobry przy konfiguracji małe zdziwienie bo w opisie pakietu jak wół było napisane „Dowolna ilość baz MySQL i postgreSQL”… fajnie tylko fakt, że bazy postgreSQL dostępne są za dodatkową opłatą a w standardzie jest tylko MySQL napisane było jedynie w domyślnie zwiniętym menu „pokaż dodatki”. Ot taki mały chłyt makertingowy, w chwili pisania tego tekstu postgreSQL jest już dostępny w standardzie ale niesmak pozostał. Czytaj dalej „Hosting SEO tylko nie w hosting.seo-linuxpl.com!”

4Developers 2012 – prezentacje i krótka relacja

W poprzednim wpisie zachęcałem Was do uczestnictwa w 4Developers 2012, minął miesiąc od imprezy, więc czas najwyższy na krótkie podsumowanie.

Ogólne wrażenia

Konferencja odbywała się w centrum konferencyjnym Concordia Design w centrum Poznania, dojazd dogodny autem, niedaleko dworzec PKP. Warunki konferencyjne bardzo dobre – akurat o to się nie obawiałem, gdyż organizatorzy 4Developers zdążyli nas przyzwyczaić do pewnego standardu.

Zero problemów z nagłośnieniem, terminowością rozpoczęcia i zakończenia prezentacji, szwedzki stół z napojami, słodyczami i owocami, drobne konkursy oraz stanowiska sponsorów IT z darmowymi energetykami oraz wifi… czyli wszystko co dobra konferencja branżowa powinna posiadać. Czytaj dalej „4Developers 2012 – prezentacje i krótka relacja”

4Developers 2012

Już niedługo, 18 kwietnia startuje kolejna (czwarta) edycja konferencji 4Developers, która tym razem odbędzie się w Poznaniu.

4Developers to jednodniowa konferencja technologiczna kierowana głównie do co najmniej średnio zaawansowanych developerów aplikacji internetowych oraz project managerów.

Konferencja trwa około 7 godzin, w tym czasie prowadzone są jednoczesne wykłady w 4 tematykach, każde wystąpienie trwa około 45-60 min, nie musimy deklarować tematyki, na którą się wybieramy, w każdym momencie możemy zmienić salę. Czytaj dalej „4Developers 2012”

Jak w Google Analytics zliczać kliknięcia 'like it’?

Tworząc aplikacje czy konkursy na Facebooku z pewnością chcielibyśmy wiedzieć jak przekładają się one na przyrost fanów fanpage marki.

  1. W sekcji <head> podpinamy kod Google Analytics.
  2. Wstawiamy like button <fb:like></fb:like>
  3. Osadzamy asynchroniczny kod biblioteki Facebooka.
  4. Podpinamy funkcje pod zdarzenia facebooka 'edge.create’ i 'edge.remove’, w tych funkcjach wywołujemy handler Google Analytics z pożądanymi parametrami.

 

<head>
 <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXX-XX']);
      _gaq.push(['_trackPageview']);
    
      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();  
 </script>
</head>

<body>
<div id="fb-root"></div>
<fb:like href="http://www.facebook.com/FANPAGE" send="false" show_faces="false" font=""></fb:like>

<script type="text/javascript">
    window.fbAsyncInit = function() {
        FB.init({appId: 'YOUR_APP_ID', status: true, cookie: true, xfbml: true});
        FB.Canvas.setAutoResize();
        FB.Event.subscribe('edge.create',
            function(response) {
                alert('like');
                _gaq.push(['_trackPageview', '/like_it']);
            }
        );
        FB.Event.subscribe('edge.remove',
            function(response) {
                alert('unlike');
                _gaq.push(['_trackPageview', '/unlike_it']); 
            }
        );
    };

    //Load the SDK asynchronously
    (function() {
        var e = document.createElement('script'); e.async = true;
            e.src = document.location.protocol +
              '//connect.facebook.net/pl_PL/all.js';
            document.getElementById('fb-root').appendChild(e);
    }());
</script>
</body>

Z powyższego kodu należy usunąć alerty, które są wstawione jedynie dla testu działania mechanizmu.