Crearea site-ului meu WordPress cu AJAX accesibil pentru crawler-uri

12 aug. 2011, 05:14:30
Vizualizări: 4.15K
Voturi: 9

Am citit următoarele și încerc să aplic această schemă pe site-ul meu care rulează pe WordPress: http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

Dacă vizitezi site-ul meu la http://www.visualise.ca/ vei vedea că încarcă postările în pagina principală și URL-ul devine http://visualise.ca/#!/anne-au-cherry când această postare este încărcată. O versiune statică a aceluiași conținut este disponibilă pentru crawler la http://visualise.ca/anne-au-cherry dar dacă un vizitator folosind un browser o accesează, va fi redirecționat către http://visualise.ca/#!/anne-au-cherry (acest lucru se face cu javascript).

Pentru a furniza crawler-ului parametrul necesar ?_escaped_fragment_= am folosit o modificare WordPress pe care am găsit-o pe internet: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request și acum GoogleBot poate vedea conținutul paginilor mele cu AJAX. Am crezut că totul este rezolvat.

Dar când lipesc un link al unei postări pe Facebook (de exemplu), acesta nu poate citi conținutul paginii, așa că am presupus că site-ul meu nu respectă cu adevărat schema descrisă în documentația Google, deși Facebook o suportă (dacă lipesti http://twitter.com/#!/gablabelle va funcționa). Deoarece folosesc plugin-ul jQuery.address pentru a obține hashbang-ul meu (#!), m-am dus pe site-ul lor și am descărcat fișierele lor de exemplu pentru a vedea care sunt diferențele dintre fișierele lor și ale mele și am realizat că probabil folosesc o funcție php pentru a crea instantaneele HTML necesare: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php pentru că asta este motivul, cred, pentru care Facebook nu poate citi al meu.

<?php

    error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));

    $fragment = $_REQUEST['_escaped_fragment_'];
    $file = 'data/' . (isset($fragment) && $fragment != '' && $fragment != '/' ? preg_replace('/\//', '', $fragment) : 'home') . '.xml';
    $re = '/(^<[^>]*>)|(\n|\r\n|\t|\s{2,4})*/';

    $handle = fopen($file, 'r');
    if ($handle != false) {
        $content = preg_replace($re, '', fread($handle, filesize($file)));
        fclose($handle);
    } else {
     $content = 'Pagina nu a fost găsită!';
        header(php_sapi_name() == 'cgi' ? 'Status: 404' : 'HTTP/1.1 404');
    }

?>

Deci cred că aș putea folosi o funcție php similară pentru a servi instantaneele HTML în loc să folosesc modificarea WordPress, dar ar trebui să o adaptez pentru WordPress. Problema este că nu sunt programator și am făcut tot ce am putut până acum.

Postările mele sunt în acest format: http://visualise.ca/#!/anne-au-cherry iar versiunea statică este disponibilă la http://visualise.ca/anne-au-cherry (Unde anne-au-cherry este slug-ul postării și se schimbă în funcție de pagina pe care o vizualizăm).

Deci întrebarea mea este: poate cineva să confirme că sunt pe drumul cel bun și, dacă este posibil, să mă ajute să creez acea funcție php?

Mulțumesc mult pentru timpul și ajutorul acordat!

2
Comentarii

Te-ai gândit să generezi o hartă a site-ului? De exemplu, Yoast WordPress SEO generează automat o hartă a site-ului pentru conținutul tău și o trimite către Bing, Google și Yahoo...

User User
14 sept. 2011 20:55:18

+1 la ideea de hartă a site-ului. Totuși, încă sunt confuz în legătură cu parametrul URL care este transmis pentru a afișa site-ul către Google. Ai putea să lipesti un URL care include atât a) conținutul paginii cât și b) funcționează fără JavaScript? Dacă acest lucru nu există, nu este nimic pentru Google sau Facebook de parcurs.

brandwaffle brandwaffle
23 dec. 2011 17:43:30
Toate răspunsurile la întrebare 3
0

Mai exact, EVITAȚI utilizarea "hashbang" ("!#") pentru a face site-urile WordPress alimentate prin AJAX accesibile motoarelor de căutare.

Cu adevărat nu doriți să folosiți metoda "hashbang" pe un site WordPress.

"!#" seamănă mai mult cu o soluție improvizată pentru site-urile care nu pot oferi o versiune statică analogă cu cea AJAX. Utilizarea sa în general nu este recomandată de Google, decât dacă nu există altă alternativă disponibilă.

Nu există niciun beneficiu în implementarea unui sistem hashbang în WordPress. O soluție AJAX pentru WordPress ar trebui să funcționeze în jurul schemei de URL existente (fără hash, fără bang).

Rezumat: WordPress este în mod natural accesibil motoarelor de căutare; pur și simplu nu-l stricați folosind hash-bangs.

31 ian. 2012 20:44:15
0

Dacă te referi specific la faptul că Facebook nu afișează corect meta-informațiile pentru pagina ta, ar trebui să te uiți la pluginul OpenGraph pentru WordPress, deoarece acesta va adăuga metadatele og:atribute corespunzătoare. http://wordpress.org/extend/plugins/opengraph/

De asemenea, poți adăuga un link ca acesta în header

<link rel="canonical" href="link_back_to_real_post_url">

Și vezi dacă asta ajută cu ceva.

Totuși, trebuie să te întreb, de ce faci asta? Twitter a fost criticat aspru pentru această structură URL tocmai pentru că este dificil de parcurs. Nu spun că nu ar trebui să o faci, dar sunt foarte curios care este motivul :)

23 dec. 2011 17:39:07
1

Ceea ce am făcut de fapt a fost să nu folosesc hashbangs-uri, așa cum a sugerat WraithKenny.

Folosind plugin-ul jQuery address cu metoda $.address.state(value) pentru a seta calea de bază a site-ului care este utilizată în managementul stării HTML5 și metoda $.address.value(value) pentru a seta valoarea curentă de deep linking, am reușit să realizez ceea ce doream.

http://visualise.ca/

Postările (faceți clic pe o miniatură de imagine) sunt încărcate prin AJAX și URL-ul se schimbă în același timp, postările existând independent folosind, desigur, aceeași structură de permalink-uri, astfel încât sunt complet accesibile pentru crawleri.

Singura problemă va fi pentru browserele mai vechi care, cred (trebuie verificat), vor vedea în continuare hashbangs-urile.

Deoarece nu sunt dezvoltator, mi-a luat mult timp să înțeleg. :-/ Dar sunt destul de mulțumit de rezultate acum ;-)

jQuery address: http://www.asual.com/jquery/address/

20 feb. 2012 19:28:14
Comentarii

Aruncă o privire la plugin-ul jQuery pjax. https://github.com/defunkt/jquery-pjax Este foarte asemănător, dar se va ocupa de încărcarea conținutului pentru tine, etc. Iată un exemplu de ceea ce am făcut cu el pentru un child theme Twenty Eleven https://github.com/chrisguitarguy/pjaxy

chrisguitarguy chrisguitarguy
20 feb. 2012 20:19:56