Створення мого WordPress WordPress на базі AJAX


9

Я читаю наступне і намагаюся застосувати цю схему на своєму веб-сайті, на якому працює WordPress: http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

Якщо ви завітаєте на мій веб-сайт за адресою http://www.visualise.ca/, ви побачите, що він завантажує повідомлення на домашній сторінці, і URL-адреса стає http://visualise.ca/#!/anne-au-cherry, коли це повідомлення завантажується. Статична версія того ж вмісту доступна для сканера на веб-сайті http://visualise.ca/anne-au-cherry, але якщо відвідувач, який користується браузером, відвідує його, він буде переспрямований на http://visualise.ca/#! / anne-au-cherry (це робиться за допомогою JavaScript).

Для того, щоб забезпечити сканеру потрібне, ?_escaped_fragment_=я використав хак WordPress, який я знайшов у мережі: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request і тепер GoogleBot може бачити вміст моїх сторінок на базі AJAX. Я думав, що це все зроблено.

Але коли я вставляю посилання на Facebook до Facebook (тобто), він не може прочитати вміст сторінки, тому я здогадався, що мій веб-сайт насправді не дотримується схеми, описаної в документації Google, оскільки Facebook підтримує його (якщо вставити http : //twitter.com/#! / gablabelle це буде працювати). Тому, оскільки я використовую плагін jQuery.address, щоб отримати свій хешбанг (#!), Я зайшов на їхній веб-сайт і завантажив їх зразкові файли, щоб побачити, в чому полягають відмінності між їхніми файлами та моїми, і зрозумів, що вони, ймовірно, використовують функцію php щоб створити необхідні знімки HTML: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php , тому що, напевно, Facebook не може прочитати мою.

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

?>

Тож я здогадуюсь, що я, можливо, міг би використовувати аналогічну функцію php для подачі знімків HTML замість того, щоб використовувати хак WordPress, але мені потрібно адаптувати його до WordPress. Проблема в тому, що я не програміст і я зробив все можливе до цього часу.

Моя публікація в такому форматі: http://visualise.ca/#!/anne-au-cherry, а статична версія доступна на веб-сайті http://visualise.ca/anne-au-cherry (Де anne-au-cherry - це слизький пост і змінюється залежно від сторінки, яку ми переглядаємо).

Тож моє запитання, чи може хтось підтвердити, що я на вірному шляху, і якщо можливо, також допоможе створити цю функцію php?

Велике спасибі за ваш час та допомогу!


5
Ви думали створити мапу сайту? Наприклад, Yoast WordPress SEO автоматично створює мапу сайту для вашого контенту і надсилає його до Bing, Google та Yahoo ...

+1 до ідеї мапи сайту. Я все ще плутаю параметр URL-адреси, який передається, щоб показати сайт Google. Чи можете ви вставити URL-адресу, що включає як a) вміст сторінки, так і b) запуск без JavaScript? Якщо цього не існує, Google і Facebook не сканують.
brandwaffle

Відповіді:


4

Зокрема, уникніть використання "hashbang" ("! #"), Щоб зробити веб-сайти WordPress на базі AJAX сканірованими.

Ви дійсно не хочете використовувати метод "хешбанг" на сайті WordPress.

"! #" Більше нагадує вигадливий патч для сайтів, які не можуть надати статичний аналог його версії AJAX. Його використання в цілому не рекомендується Google, якщо немає альтернативи.

Немає користі від впровадження системи хешбанг в WordPress. Переднє рішення AJAX для WordPress повинно працювати навколо існуючої схеми URL-адреси (ні хеш, ні баг).

Короткий зміст: WordPress природним чином сканує; просто не ламайте його, використовуючи хеш-чуб.


1

Якщо ви спеціально посилаєтесь на те, що Facebook не відображає належним чином метаінформацію для вашої сторінки, слід заглянути в плагін OpenGraph для WordPress, оскільки він додасть відповідні метадані og: атрибут. http://wordpress.org/extend/plugins/opengraph/

Також ви можете додати подібне посилання у заголовку

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

І подивіться, чи це щось робить.

Я маю запитати, хоча ти чому це робиш? Твіттер потрапив під великий обстріл для цієї структури URL саме тому, що болісно повзати. Не кажучи, що не варто цього робити, але досить цікаво, в чому причина :)


1

Те, що я зробив насправді, це не використовувати хеш-баги, як запропонував WraithKenny.

Використовуючи плагін адреси jQuery за допомогою методу $ .address.state (value) для встановлення базового шляху веб-сайту, який використовується в управлінні державою HTML5, та методом $ .address.value (значення) для встановлення поточного глибоке пов'язуюче значення я зміг зробити те, що хотів.

http://visualise.ca/

Повідомлення (натисніть на мініатюру зображення) завантажуються через AJAX, і URL одночасно змінюється, публікації існують самостійно, використовуючи, звичайно, таку ж структуру постійної посилання, щоб вона була повністю сканувана.

Єдина проблема буде у старих браузерах, які, я думаю (потрібно перевірити), все ще побачать хешбаги.

Оскільки я не розробник, мені знадобилося багато часу, щоб зрозуміти. : - / Але я цілком задоволений результатами зараз ;-)

Адреса jQuery: http://www.asual.com/jquery/address/


1
Погляньте на плагін jQuery pjax. github.com/defunkt/jquery-pjax Це дуже схоже, але піклується про завантаження вмісту для вас і т. д. Ось приклад того, що я зробив з ним для теми «Двадцять одинадцять дітей» github.com/chrisguitarguy/pjaxy
chrisguitarguy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.