Hacer que mi WordPress con tecnología AJAX sea rastreable

9

Leo lo siguiente e intento aplicar este esquema a mi sitio web que ejecuta WordPress: http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

Si visita mi sitio web en http://www.visualise.ca/ verá que carga las publicaciones dentro de la página de inicio y la URL se convierte en http://visualise.ca/#!/anne-au-cherry cuando esto la publicación está cargada. Una versión estática del mismo contenido está disponible para el rastreador en http://visualise.ca/anne-au-cherry, pero si un visitante que usa un navegador lo visita, será redirigido a http://visualise.ca/#. / anne-au-cherry (esto se hace con javascript).

Para proporcionar al rastreador lo necesario ?_escaped_fragment_=, utilicé un truco de WordPress que encontré en la red: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request y ahora el GoogleBot puede ver el contenido de mis páginas con tecnología AJAX. Pensé que todo estaba hecho.

Pero cuando pego un enlace de publicación en Facebook (es decir) no puede leer el contenido de la página, así que supuse que mi sitio web realmente no respeta el esquema descrito en la documentación de Google, ya que Facebook lo admite (si pega http : //twitter.com/#! / gablabelle funcionará). Entonces, como estoy usando el complemento jQuery.address para obtener mi hashbang (#!) Fui a su sitio web y descargué sus archivos de muestra para ver cuáles eran las diferencias entre sus archivos y los míos y me di cuenta de que probablemente estaban usando una función php para crear las instantáneas HTML necesarias: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php porque es por eso que, supongo, Facebook no puede leer el mío.

<?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');
    }

?>

Entonces, supongo que tal vez podría usar una función php similar para servir las instantáneas HTML en lugar de usar el truco de WordPress, pero necesitaría adaptarlo a WordPress. El problema es que no soy programador e hice mi mejor esfuerzo hasta ahora.

Mi publicación está en este formato: http://visualise.ca/#!/anne-au-cherry y la versión estática está disponible en http://visualise.ca/anne-au-cherry (Donde anne-au-cherry es la babosa de la publicación y los cambios según la página que estamos viendo).

Entonces, mi pregunta es ¿alguien podría confirmar que estoy en el camino correcto y, si es posible, también ayudar a crear esa función php?

¡Muchas gracias por tu tiempo y ayuda!

Charla
fuente
55
¿Has pensado en generar un mapa del sitio? En el ejemplo, Yoast WordPress SEO genera automáticamente un mapa del sitio para su contenido y lo envía a Bing, Google y Yahoo ...
+1 a la idea del mapa del sitio. Sin embargo, todavía estoy confundido sobre el parámetro de URL que se pasa para mostrar el sitio a Google. ¿Podría pegar una URL que incluya a) contenido de la página yb) se ejecute sin JavaScript? Si eso no existe, Google o Facebook no tienen nada que rastrear.
brandwaffle

Respuestas:

4

EVITE específicamente el uso de "hashbang" ("! #") Para que los sitios de WordPress con tecnología AJAX sean rastreables.

Realmente no desea utilizar el método "hashbang" en un sitio de WordPress.

El "! #" Es más como un parche hacky para sitios que no pueden proporcionar un análogo estático a su versión AJAX. Google no recomienda su uso en general a menos que no haya otra alternativa disponible.

No hay ningún beneficio en implementar un sistema hashbang en WordPress. Una solución front-end AJAX para WordPress debería funcionar en torno al esquema de URL existente (sin hash, sin explosión).

Resumen: WordPress es naturalmente rastreable; simplemente no lo rompas usando hash-bangs.

WraithKenny
fuente
1

Si se refiere específicamente a que Facebook no muestra correctamente la metainformación de su página, debe buscar en el complemento OpenGraph para WordPress, ya que agregará los metadatos de atributo og: apropiados. http://wordpress.org/extend/plugins/opengraph/

Además, puede agregar un enlace como este en el encabezado

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

Y mira si eso hace algo.

Sin embargo, tengo que preguntar, ¿por qué haces esto? Twitter ha sido criticado por esta estructura de URL precisamente porque es difícil de rastrear. No digo que no debas hacerlo, pero eres bastante curioso sobre cuál es la razón :)

Brandwaffle
fuente
1

Lo que hice en realidad es no usar hashbangs como sugirió WraithKenny.

Usando el complemento de dirección jQuery con el método $ .address.state (value) para establecer la ruta base del sitio web que se utiliza en la administración de estado HTML5 y el método $ .address.value (value) para establecer el actual valor de enlace profundo Pude hacer lo que deseaba.

http://visualise.ca/

Las publicaciones (haga clic en la miniatura de una imagen) se cargan a través de AJAX y la URL cambia al mismo tiempo, las publicaciones existen por sí mismas utilizando, por supuesto, la misma estructura de enlace permanente, por lo que es completamente rastreable.

El único problema será para los navegadores más antiguos que, creo (deben verificarse), seguirán viendo los hashbangs.

Como no soy un desarrollador, me llevó mucho tiempo entenderlo. : - / Pero ahora estoy bastante contento con los resultados ;-)

Dirección de jQuery: http://www.asual.com/jquery/address/

Charla
fuente
1
Eche un vistazo al complemento jQuery pjax. github.com/defunkt/jquery-pjax Es muy similar, pero se encargará de cargar el contenido por usted, etc. Aquí hay un ejemplo de lo que hice con un tema de Twenty Eleven Child github.com/chrisguitarguy/pjaxy
chrisguitarguy