Rendere il mio WordPress basato su AJAX Crawlable


9

Ho letto quanto segue e provo ad applicare questo schema al mio sito Web con WordPress: http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

Se visiti il ​​mio sito Web all'indirizzo http://www.visualise.ca/ vedrai che carica i post nella home page e l'URL diventa http://visualise.ca/#!/anne-au-cherry quando questo il post è caricato. Una versione statica dello stesso contenuto è disponibile per il crawler su http://visualise.ca/anne-au-cherry ma se un visitatore che utilizza un browser lo visita verrà reindirizzato a http://visualise.ca/#! / anne-au-cherry (questo viene fatto con javascript).

Per fornire al crawler il necessario ?_escaped_fragment_=ho usato un hack di WordPress che ho trovato in rete: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request e ora il GoogleBot può vedere il contenuto delle mie pagine basate su AJAX. Pensavo fosse tutto fatto.

Ma quando incollo un link di post su Facebook (cioè) non è in grado di leggere il contenuto della pagina, quindi ho indovinato che il mio sito Web non rispetta realmente lo schema descritto nella documentazione di Google poiché Facebook lo supporta (se si incolla http : //twitter.com/#! / gablabelle funzionerà). Quindi da quando sto usando il plugin jQuery.address per ottenere il mio hashbang (#!) Sono andato sul loro sito web e ho scaricato i loro file di esempio per vedere quali erano le differenze tra i miei e i miei e ho capito che probabilmente stavano usando una funzione php per creare le istantanee HTML necessarie: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php perché è per questo che, immagino, Facebook non può leggere la mia.

<?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 = 'Page not found!';
        header(php_sapi_name() == 'cgi' ? 'Status: 404' : 'HTTP/1.1 404');
    }

?>

Quindi la mia ipotesi è che potrei forse usare una funzione php simile per servire le istantanee HTML invece di usare l'hack di WordPress ma avrei bisogno di adattarlo a WordPress. Il problema è che non sono un programmatore e finora ho fatto del mio meglio.

I miei post sono in questo formato: http://visualise.ca/#!/anne-au-cherry e la versione statica è disponibile su http://visualise.ca/anne-au-cherry (Where anne-au-cherry è la lumaca del post e cambia a seconda della pagina che stiamo visualizzando).

Quindi la mia domanda è: qualcuno potrebbe confermare che sono sulla buona strada e, se possibile, anche aiutare a creare quella funzione php?

Mille grazie per il tuo tempo e aiuto!


5
Hai pensato di generare una sitemap? Ad esempio, Yoast WordPress SEO genera automaticamente una sitemap per i tuoi contenuti e la invia a Bing, Google e Yahoo ...

+1 all'idea della Sitemap. Tuttavia, sono ancora confuso riguardo al parametro url che viene passato per mostrare il sito a Google. Potresti incollare un URL che include sia a) il contenuto della pagina che b) viene eseguito senza JavaScript? Se ciò non esiste, non c'è nulla per cui Google o Facebook possano eseguire la scansione.
brandwaffle,

Risposte:


4

In particolare, EVITARE di utilizzare "hashbang" ("! #") Per rendere i siti WordPress basati su AJAX che possono essere trascinati.

Non vuoi davvero usare il metodo "hashbang" su un sito WordPress.

"! #" È più simile a una patch caotica per i siti che non sono in grado di fornire un analogo statico alla sua versione AJAX. Il suo utilizzo in generale non è raccomandato da Google a meno che non sia disponibile alcuna alternativa.

Non vi è alcun vantaggio nell'implementazione di un sistema hashbang in WordPress. Una soluzione AJAX front-end per WordPress dovrebbe aggirare lo schema di URL esistente (no hash, no bang).

Riepilogo: WordPress è naturalmente scorrevole; semplicemente non romperlo usando gli hash-bang.


1

Se ti riferisci specificamente a Facebook che non mostra correttamente le meta info per la tua pagina, dovresti guardare nel plugin OpenGraph per WordPress, in quanto aggiungerà i metadati og: attributo appropriati. http://wordpress.org/extend/plugins/opengraph/

Inoltre, puoi aggiungere un link come questo nell'intestazione

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

E vedi se fa qualcosa.

Devo chiederti però, perché lo stai facendo? Twitter è stato messo a dura prova per questa struttura di URL proprio perché è una seccatura strisciare. Non dire che non dovresti farlo, ma piuttosto curioso di sapere qual è il motivo :)


1

Quello che ho fatto in realtà è di non usare gli hashbang come suggerito da WraithKenny.

Utilizzo del plug-in dell'indirizzo jQuery con il metodo $ .address.state (valore) per impostare il percorso di base del sito Web utilizzato nella gestione dello stato HTML5 e il metodo $ .address.value (valore) per impostare l'attuale valore di deep linking Sono stato in grado di fare ciò che desideravo.

http://visualise.ca/

I post (fare clic su un'anteprima dell'immagine) vengono caricati tramite AJAX e l'URL cambia contemporaneamente, i post esistono da soli utilizzando, ovviamente, la stessa struttura del permalink, quindi è completamente scansionabile.

L'unico problema sarà per i browser più vecchi che, credo (deve essere verificato), vedranno ancora gli hashbang.

Dal momento che non sono uno sviluppatore, mi ci è voluto molto tempo per capire. : - / Ma sono abbastanza contento dei risultati ora ;-)

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


1
Dai un'occhiata al plugin jQuery pjax. github.com/defunkt/jquery-pjax È molto simile ma mi
occuperò
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.