Tornando meu WordPress movido a AJAX rastreável

9

Li o seguinte e tento aplicar esse esquema ao meu site executando o WordPress: http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

Se você visitar meu site em http://www.visualise.ca/ , verá que ele carrega as postagens na página inicial e o URL se torna http://visualise.ca/#!/anne-au-cherry quando esse a postagem está carregada. Uma versão estática do mesmo conteúdo está disponível para o rastreador em http://visualise.ca/anne-au-cherry, mas se um visitante usando um navegador o visitar, ele será redirecionado para http://visualise.ca/#! / anne-au-cherry (isso é feito com javascript).

Para fornecer ao rastreador o necessário ?_escaped_fragment_=, usei um hack do WordPress que encontrei na rede: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request e agora o O GoogleBot pode ver o conteúdo das minhas páginas com AJAX. Eu pensei que estava tudo pronto.

Mas quando colo um link de postagem no Facebook (ou seja), ele não consegue ler o conteúdo da página, então acho que meu site não está realmente respeitando o esquema descrito na documentação do Google, pois o Facebook o suporta (se você colar http : //twitter.com/#! / gablabelle funcionará). Então, como estou usando o plugin jQuery.address para obter meu hashbang (#!), Fui ao site deles e baixei seus arquivos de amostra para ver quais eram as diferenças entre os arquivos deles e os meus e percebi que eles provavelmente estavam usando uma função php para criar os instantâneos HTML necessários: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php, porque é por isso que, acho, o Facebook não consegue ler os meus.

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

?>

Então, meu palpite é que eu poderia usar uma função php semelhante para exibir os instantâneos HTML em vez de usar o hack do WordPress, mas precisaria adaptá-lo ao WordPress. O problema é que não sou programador e fiz o meu melhor até agora.

Minha postagem está neste formato: http://visualise.ca/#!/anne-au-cherry e a versão estática está disponível em http://visualise.ca/anne-au-cherry (Onde anne-au-cherry é a lesma da postagem e muda de acordo com a página que estamos visualizando).

Então, minha pergunta é: alguém poderia confirmar que estou no caminho certo e, se possível, também ajudar a criar essa função php?

Muito obrigado pelo seu tempo e ajuda!

Entalhe
fonte
5
Você já pensou em gerar um mapa do site? No exemplo, Yoast WordPress SEO gera automaticamente um mapa do site para o seu conteúdo e envia-lo para o Bing, Google e Yahoo ...
+1 na ideia do mapa do site. Ainda estou confuso quanto ao parâmetro do URL que está sendo transmitido para mostrar o site ao Google. Você pode colar um URL que inclua a) conteúdo da página eb) seja executado sem JavaScript? Se isso não existir, não há nada para o Google ou o Facebook rastrear.
brandwaffle

Respostas:

4

EVITE, especificamente, o uso de "hashbang" ("! #") Para tornar rastreáveis ​​os sites WordPress com AJAX.

Você realmente não deseja usar o método "hashbang" em um site WordPress.

O "! #" É mais como um patch hacky para sites que não podem fornecer um analógico estático para sua versão do AJAX. Seu uso em geral não é recomendado pelo Google, a menos que nenhuma alternativa esteja disponível.

Não há benefício em implementar um sistema hashbang no WordPress. Uma solução AJAX front-end para WordPress deve contornar o esquema de URL existente (sem hash, sem estrondo).

Resumo: o WordPress é naturalmente rastreável; simplesmente não o quebre usando hash-bangs.

WraithKenny
fonte
1

Se você está se referindo especificamente ao Facebook que não mostra corretamente as meta informações da sua página, deve procurar o plugin OpenGraph para WordPress, pois ele adicionará os metadados og: attribute apropriados. http://wordpress.org/extend/plugins/opengraph/

Além disso, você pode adicionar um link como este no cabeçalho

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

E veja se isso faz alguma coisa.

Eu tenho que perguntar, por que você está fazendo isso? O Twitter sofreu grandes críticas por essa estrutura de URL justamente porque é difícil rastrear. Não estou dizendo que você não deveria fazer isso, mas bastante curioso sobre qual é o motivo :)

brandwaffle
fonte
1

O que eu fiz na verdade é não usar hashbangs como sugerido pelo WraithKenny.

Usando o plug-in de endereço jQuery com o método $ .address.state (value) para definir o caminho base do site que é utilizado no gerenciamento de estado HTML5 e o método $ .address.value (value) para definir o atual valor de ligação profunda, fui capaz de fazer o que desejava.

http://visualise.ca/

As postagens (clique na miniatura da imagem) são carregadas via AJAX e o URL muda ao mesmo tempo; as postagens existem por conta própria, usando, é claro, a mesma estrutura de permalink, para que seja totalmente rastreável.

O único problema será para navegadores mais antigos que, acredito (precisam ser verificados), ainda verão os hashbangs.

Como não sou desenvolvedor, levei muito tempo para entender. : - / Mas estou muito feliz com os resultados agora ;-)

Endereço jQuery: http://www.asual.com/jquery/address/

Entalhe
fonte
11
Dê uma olhada no plugin jQuery pjax. github.com/defunkt/jquery-pjax É muito parecido, mas cuidará de carregar o conteúdo para você, etc. Aqui está um exemplo do que eu fiz com ele no tema Twenty Eleven Child github.com/chrisguitarguy/pjaxy
chrisguitarguy