Làm cho AJAX được hỗ trợ WordPress của tôi có thể thu thập dữ liệu


9

Tôi đã đọc những điều sau đây và thử áp dụng lược đồ này cho trang web của tôi chạy WordPress: http://code.google.com.vn/intl/fr-CA/web/ajaxcrawling/index.html

Nếu bạn truy cập trang web của tôi tại http://www.visualise.ca/ bạn sẽ thấy rằng nó tải các bài đăng trong trang chủ và url sẽ trở thành http://visualise.ca/#!/anne-au-cherry khi điều này bài được tải. Phiên bản tĩnh của cùng một nội dung có sẵn cho trình thu thập thông tin tại http://visualise.ca/anne-au-cherry nhưng nếu khách truy cập sử dụng trình duyệt truy cập, anh ta sẽ được chuyển hướng đến http://visualise.ca/#! / anne-au-cherry (điều này được thực hiện với javascript).

Để cung cấp cho trình thu thập thông tin cần thiết, ?_escaped_fragment_=tôi đã sử dụng một bản hack WordPress mà tôi đã tìm thấy trên mạng: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request và giờ là GoogleBot có thể xem nội dung của các trang được cung cấp AJAX của tôi. Tôi nghĩ rằng tất cả đã được thực hiện.

Nhưng khi tôi dán một liên kết bài đăng lên Facebook (tức là) nó không thể đọc được nội dung của trang nên tôi đoán rằng trang web của tôi không thực sự tôn trọng lược đồ được mô tả trong tài liệu Google vì Facebook đang hỗ trợ nó (Nếu bạn dán http : //twitter.com/#! / gablabelle nó sẽ hoạt động). Vì vậy, vì tôi đang sử dụng plugin jQuery.address để lấy hashbang của mình (#!), Tôi đã truy cập trang web của họ và tải xuống các tệp mẫu của họ để xem sự khác biệt giữa các tệp của họ và của tôi và nhận ra rằng họ có thể đang sử dụng chức năng php để tạo các ảnh chụp nhanh HTML cần thiết: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php vì đây là lý do tại sao, tôi đoán, Facebook không thể đọc của tôi.

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

?>

Vì vậy, dự đoán của tôi là tôi có thể sử dụng một hàm php tương tự để phục vụ các ảnh chụp nhanh HTML thay vì sử dụng hack WordPress nhưng tôi sẽ cần phải điều chỉnh nó với WordPress. Vấn đề là tôi không có lập trình viên và tôi đã làm hết sức mình cho đến nay.

Bài đăng của tôi ở định dạng này: http://visualise.ca/#!/anne-au-cherry và phiên bản tĩnh có sẵn tại http://visualise.ca/anne-au-cherry (Trường hợp anne-au-cherry là sên của bài đăng và thay đổi tùy thuộc vào trang chúng tôi đang xem).

Vì vậy, câu hỏi của tôi là ai đó có thể xác nhận rằng tôi đang đi đúng hướng và nếu có thể cũng giúp tạo ra chức năng php đó?

Rất cám ơn đã dành thời gian và sự giúp đỡ của bạn!


5
Bạn đã nghĩ đến việc tạo ra một sơ đồ trang web? Ví dụ: Yoast WordPress SEO tự động tạo sơ đồ trang web cho nội dung của bạn và gửi nó cho Bing, Google và Yahoo ...

+1 cho ý tưởng sơ đồ trang web. Mặc dù vậy, tôi vẫn bối rối về thông số url được truyền vào để hiển thị trang web cho Google. Bạn có thể dán một url bao gồm cả a) nội dung trang và b) chạy mà không cần JavaScript không? Nếu điều đó không tồn tại, không có gì để Google hoặc Facebook thu thập dữ liệu.
Brandwaff 23/12

Câu trả lời:


4

Cụ thể AVOID bằng cách sử dụng "hashbang" ("! #") Để làm cho các trang web WordPress được hỗ trợ AJAX có thể thu thập dữ liệu.

Bạn thực sự không muốn sử dụng phương pháp "hashbang" trên trang web WordPress.

"! #" Giống như một bản vá lỗi cho các trang web không thể cung cấp tương tự tĩnh cho phiên bản AJAX của nó. Việc sử dụng nói chung không được Google khuyến nghị trừ khi không có giải pháp thay thế nào.

Không có lợi ích khi thực hiện một hệ thống hashbang trong WordPress. Một giải pháp AJAX mặt trước cho WordPress sẽ hoạt động xung quanh lược đồ url hiện có (không băm, không đập).

Tóm tắt: WordPress tự nhiên có thể thu thập dữ liệu; chỉ đơn giản là không phá vỡ nó bằng cách sử dụng hàm băm.


1

Nếu bạn đặc biệt đề cập đến Facebook không hiển thị đúng thông tin meta cho trang của bạn, bạn nên xem xét plugin OpenGraph cho WordPress, vì nó sẽ thêm siêu dữ liệu thuộc tính og: thích hợp. http://wordpress.org/extend/plugins/opengraph/

Ngoài ra, bạn có thể thêm một liên kết như thế này trong tiêu đề

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

Và xem nếu điều đó làm bất cứ điều gì.

Tôi phải hỏi mặc dù, tại sao bạn làm điều này? Twitter đã bị hỏa hoạn lớn cho cấu trúc URL này một cách chính xác bởi vì nó là một nỗi đau để bò. Không nói rằng bạn không nên làm điều đó, nhưng khá tò mò về lý do là gì :)


1

Những gì tôi đã làm thực sự là không sử dụng hashbang như WraithKenny đề xuất.

Sử dụng plugin địa chỉ jQuery với phương thức $ .address.state (value) để đặt đường dẫn cơ sở của trang web được sử dụng trong quản lý trạng thái HTML5 và phương thức $ .address.value (value) để đặt hiện tại giá trị liên kết sâu Tôi đã có thể làm những gì tôi muốn.

http://visualise.ca/

Các bài đăng (nhấp vào hình thu nhỏ hình ảnh) được tải thông qua AJAX và URL thay đổi cùng một lúc, các bài đăng tồn tại bằng cách sử dụng, tất nhiên, cùng một cấu trúc permalink để nó có thể thu thập thông tin đầy đủ.

Vấn đề duy nhất sẽ là đối với các trình duyệt cũ hơn, tôi nghĩ (cần phải được xác minh), vẫn thấy các hashbang.

Vì tôi không phải là người phát triển nên tôi mất nhiều thời gian để hiểu. : - / Nhưng tôi khá hài lòng với kết quả bây giờ ;-)

Địa chỉ jQuery: http://www.asual.com/jquery/address/


1
Hãy xem plugin pjax của jQuery. github.com/defunkt/jquery-pjax Nó rất giống nhưng sẽ chăm sóc tải nội dung cho bạn, vv Đây là một ví dụ về những gì tôi đã làm với nó trong một chủ đề Hai mươi Eleven Child github.com/chrisguitarguy/pjaxy
chrisguitarguy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.