ทำให้ AJAX ของฉันขับเคลื่อนการรวบรวมข้อมูล WordPress


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 (เช่น) มันไม่สามารถอ่านเนื้อหาของหน้าดังนั้นฉันเดาว่าเว็บไซต์ของฉันไม่เคารพรูปแบบที่อธิบายไว้ในเอกสารของ Google เพราะ Facebook สนับสนุน (ถ้าคุณวางhttp : //twitter.com/#! / gablabelleมันจะทำงานได้) ดังนั้นเนื่องจากฉันใช้ปลั๊กอิน jQuery.address เพื่อรับ hashbang ของฉัน (#!) ฉันไปที่เว็บไซต์ของพวกเขาและดาวน์โหลดไฟล์ตัวอย่างเพื่อดูความแตกต่างระหว่างไฟล์และของฉันและรู้ว่าพวกเขาอาจใช้ฟังก์ชัน 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 param ที่ถูกส่งผ่านเพื่อแสดงไซต์ไปยัง Google แม้ว่า คุณสามารถวาง URL ที่รวมทั้ง a) เนื้อหาของหน้าและ b) ทำงานโดยไม่มี JavaScript ได้หรือไม่ หากไม่มีอยู่จะไม่มีการรวบรวมข้อมูลใด ๆ จาก Google หรือ Facebook
brandwaffle

คำตอบ:


4

หลีกเลี่ยงเฉพาะการใช้ "hashbang" ("! #") เพื่อให้ AJAX ขับเคลื่อนเว็บไซต์ WordPress ที่รวบรวมข้อมูลได้

คุณไม่ต้องการใช้วิธี "hashbang" บนเว็บไซต์ WordPress

"! #" เป็นเหมือนตัวแก้ไขแฮ็กสำหรับไซต์ที่ไม่สามารถให้บริการสแตติกแบบอะนาล็อกกับเวอร์ชัน AJAX Google ไม่แนะนำให้ใช้งานโดยทั่วไปเว้นแต่จะไม่มีทางเลือกอื่น

นอกจากนี้ไม่มีประโยชน์ที่จะใช้ระบบ hashbang ใน WordPress โซลูชัน AJAX ส่วนหน้าสำหรับ WordPress ควรหลีกเลี่ยงรูปแบบ URL ที่มีอยู่ (ไม่มีแฮชและไม่มีผลกระทบ)

สรุป: WordPress เป็นซอฟต์แวร์รวบรวมข้อมูลตามธรรมชาติ; ไม่ทำลายมันโดยใช้แฮชเรียบ


1

หากคุณอ้างถึง Facebook โดยเฉพาะอย่างยิ่งการแสดงข้อมูลเมตาสำหรับหน้าของคุณไม่ถูกต้องคุณควรมองเข้าไปในปลั๊กอิน OpenGraph สำหรับ WordPress เนื่องจากจะเพิ่มเมตาดาต้า og: attribute ที่เหมาะสม http://wordpress.org/extend/plugins/opengraph/

นอกจากนี้คุณสามารถเพิ่มลิงค์เช่นนี้ในส่วนหัว

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

และดูว่าทำอะไร

ฉันต้องถามว่าทำไมคุณถึงทำเช่นนี้? Twitter เข้ามามีบทบาทอย่างมากสำหรับโครงสร้าง URL นี้อย่างแม่นยำเนื่องจากมีปัญหาในการรวบรวมข้อมูล ไม่บอกว่าคุณไม่ควรทำ แต่อยากรู้ว่าเหตุผลคืออะไร :)


1

สิ่งที่ฉันทำจริง ๆ คือไม่ใช้ hashbangs อย่างที่ WraithKenny แนะนำ

การใช้ปลั๊กอินที่อยู่ jQuery ด้วยวิธี $ .address.state (ค่า) เพื่อกำหนดเส้นทางหลักของเว็บไซต์ที่ใช้ในการจัดการสถานะ HTML5 และวิธีการ $ .address.value (ค่า) เพื่อตั้งค่าปัจจุบัน ค่าการเชื่อมโยงลึกฉันสามารถทำสิ่งที่ฉันต้องการได้

http://visualise.ca/

โพสต์ (คลิกที่ภาพขนาดย่อ) จะถูกโหลดผ่าน AJAX และการเปลี่ยนแปลง URL ในเวลาเดียวกันโพสต์นั้นมีอยู่ด้วยตัวเองโดยใช้โครงสร้างลิงก์แบบเดียวกันเพื่อให้สามารถรวบรวมข้อมูลได้อย่างสมบูรณ์

ปัญหาเดียวที่เกิดขึ้นกับเบราว์เซอร์รุ่นเก่าที่ฉันคิดว่า (ต้องได้รับการยืนยัน) ยังคงเห็น hashbangs

เนื่องจากฉันไม่ใช่นักพัฒนาซอฟต์แวร์ฉันใช้เวลาทำความเข้าใจมาก : - / แต่ฉันมีความสุขมากกับผลลัพธ์ในขณะนี้ ;-)

ที่อยู่ jQuery: http://www.asual.com/jquery/address/


1
ลองดูที่ jQuery pjax plugin github.com/defunkt/jquery-pjaxมันคล้ายกันมาก แต่จะดูแลโหลดเนื้อหาสำหรับคุณ ฯลฯ นี่คือตัวอย่างของสิ่งที่ฉันทำกับมันสำหรับรูปแบบที่ยี่สิบเอ็ดเด็กgithub.com/chrisguitarguy/pjaxy
chrisguitarguy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.