รับโพสต์ทั้งหมดใน RSS


10

ฉันสงสัยว่า / ถ้าฉันสามารถเข้าถึงมากกว่าโพสต์ X ล่าสุดที่กำหนดในการตั้งค่า wordpress ฉันเห็นปลั๊กอินที่ย้ายเนื้อหาบล็อกทั้งหมดผ่าน RSS ไม่ได้แหย่ไปดูวิธีการของพวกเขา

โดยทั่วไปฉันจัดการบล็อก WordPress สองร้อยบล็อกและฉันสร้างเครื่องกำเนิดจดหมายข่าวสำหรับลูกค้าของฉัน พวกเขาต้องการที่จะสามารถเลือกโพสต์ไม่กี่และมีข้อความที่ปรากฏในเนื้อหาของจดหมายข่าว ไซต์ถูกกระจายไปทั่วเซิร์ฟเวอร์หลายเครื่องและตัวสร้างจดหมายข่าวกำลังสร้างอยู่บน CRM ของเราดังนั้นการสืบค้นฐานข้อมูลโดยตรงจึงเป็นเรื่องยาก RSS จะสะอาดที่สุด แต่ฉันไม่สามารถเข้าใจวิธีการเข้าถึงมากกว่า 10 ครั้ง (เมื่อตั้ง 10 ในผู้ดูแลระบบ)

ความคิดใด ๆ


คุณหมายถึงอะไร "10 ถูกตั้งค่าในผู้ดูแลระบบ"?
gcb

คำตอบ:


5

Codex มีตัวอย่างข้อมูลเกี่ยวกับวิธีใช้post_limitsตัวกรองเพื่อแทนที่จำนวนเงินที่กำหนดใน admin สำหรับฟีด

if (isset ($query->query_vars['feed']) and ($query->query_vars['feed'] == 'ics')) 
    add_filter('post_limits','__return_empty_string'); 

http://codex.wordpress.org/Function_Reference/query_posts#Usage_Tips


1
นี่อาจเป็นตัวเลือก แต่ฉันหวังว่าจะไม่ต้องแก้ไขรหัสชุดรูปแบบบนไซต์มากกว่า 700 แห่ง
bhamrick

1
ดังนั้นนี่คือสิ่งที่ฉันทำ ไซต์ของฉันกระจายไปทั่วการติดตั้ง WordPress-Mu จำนวนหนึ่งดังนั้นมันจึงไม่ใช่อินสแตนซ์ที่แตกต่างกันนับร้อยของ WordPress บนเซิร์ฟเวอร์หลายร้อยตัว ปัญหาคือฉันต้องการฟังก์ชั่นนี้ในบางเว็บไซต์เท่านั้นที่ติดตั้ง Mu ในแต่ละครั้ง ดังนั้นฉันจึงเขียนปลั๊กอินที่ทำสิ่งนี้เขียนสคริปต์ที่อัปเดตฐานข้อมูลเพื่อเปิดใช้งานปลั๊กอินนั้นในเว็บไซต์ที่ฉันต้องการ เสร็จสิ้น ขอบคุณสำหรับความช่วยเหลือ
bhamrick

21

วิธีรับโพสต์ของคุณคือการเรียกเพจต่าง ๆ ของฟีด RSS ในเครื่องมือสร้างจดหมายข่าวของคุณ มันเป็นวิธีการที่ปลอดภัยที่ไม่ต้องการอัปเดตการติดตั้ง Wordpress ต่างๆของคุณ:

yourwebsite.com/feed -> รับโพสต์ 10 ครั้งล่าสุด

yourwebsite.com/feed/ ? paged = 2 -> รับ 10 โพสต์ถัดไป

และอื่น ๆ


4

น่าเสียดายที่สิ่งที่คุณพยายามทำนั้นโดยทั่วไปแล้วเป็นชุมชนที่ขมวดคิ้ว สิ่งที่ฉันได้ยินคุณขอคือ:

  • วิธีการดึงข้อมูลจากระยะไกลเกินจำนวนเริ่มต้น (โพสต์ล่าสุด)
  • อาจเรียกโพสต์ที่เผยแพร่ทั้งหมดสำหรับไซต์
  • โดยไม่ต้องมีปฏิสัมพันธ์โดยตรงกับเว็บไซต์ (ใช้ RSS)

นี่เป็นวิธีปฏิบัติที่ใช้กันทั่วไปในการขูดเนื้อหาจากบล็อกและเผยแพร่ซ้ำโดยไม่ได้รับอนุญาตจากผู้เขียนต้นฉบับ นั่นเป็นเหตุผลที่ฉันพูดว่ามันขมวดคิ้วโดยทั่วไป ผู้เขียนบล็อกส่วนใหญ่ใช้เวลาและพลังงานจำนวนมากในการพัฒนาเนื้อหาที่ยอดเยี่ยมดังนั้นทำให้บุคคลที่สามสามารถใช้ประโยชน์จากการทำงานอย่างหนักเพื่อเพิ่มเครดิต SEO ให้กับเว็บไซต์ของพวกเขาเอง ... ดี ... เป็นคนเงียบขรึม

ที่กล่าวมาฉันจะสมมติว่าคุณมีเหตุผลที่ถูกต้องสำหรับการคัดลอกเนื้อหาจากไซต์มากกว่า 700 ไซต์ ในกรณีนี้ฉันขอแนะนำวิธีการเขียนโปรแกรมแยกต่างหากไม่ใช่ RSS หากคุณมีข้อมูลเข้าสู่ระบบที่ถูกต้องสำหรับเว็บไซต์เหล่านี้ทั้งหมด (เช่นเป็นเว็บไซต์ของคุณและไม่ใช่ของบุคคลอื่น) คุณสามารถใช้คุณสมบัติ XML-RPC ในตัว WordPress เพื่อดึงเนื้อหา

ใช้ไลบรารี XML-RPC ในตัวเพื่อส่งคำร้องขอเพื่อmetaWeblog.getRecentPostsระบุ ID ของบล็อก (โดยปกติคือ 0 สำหรับไซต์เดียว แต่อาจแตกต่างกันในหลายไซต์), ชื่อผู้ใช้ WordPress ของคุณ, รหัสผ่าน WordPress ของคุณ, และจำนวนโพสต์ เพื่อดึงข้อมูล (ตั้งค่านี้เป็น -1 เพื่อรับทั้งหมด)

ไซต์อื่นจะตอบกลับด้วยไฟล์ XML (ค่อนข้างใหญ่) ที่มีเนื้อหาซึ่งคุณสามารถทำได้กับสิ่งที่คุณต้องการ ทั้งหมดนี้สามารถเกิดขึ้นได้เบื้องหลังและmetaWeblog.getRecentPostsคำขอจะให้ข้อมูลมากกว่าฟีด RSS (รวมถึงฟิลด์ที่กำหนดเองซึ่งอาจเป็นสิ่งสำคัญสำหรับคุณ)


2

หากหน่วยความจำทำหน้าที่ส่งผ่าน -1 เนื่องจากจำนวนโพสต์มีผลเหมือนกัน ไม่แน่ใจทั้งหมดว่าจะถูกโยนลงใน URL ได้อย่างไร

นอกจากนี้หากคุณมีไซต์มากกว่า 700 แห่งให้ลองใช้ cron ที่อัปเดตหรือคอมไพล์จากสาขาที่มีเสถียรภาพจากที่เก็บส่วนตัวในชีวิตประจำวัน ... รวมกับการโทร http รายวันไปยัง wp- admin / upgrade.php มันจะช่วยให้คุณประหยัดมากเมื่ออัพเกรดหรือปรับแต่งเว็บไซต์ของคุณ - ในการที่จะทำโดยอัตโนมัติ



0

หากคุณไปที่การตั้งค่า> การอ่าน> และเปลี่ยนค่าใน "ฟีดการแสดงข้อมูลล่าสุด" เป็นหมายเลขที่เหมาะกับคุณมันจะแสดงจำนวนฟีดที่คุณป้อน


0

แม้ว่าจะไม่ใช่ "โพสต์ทั้งหมด" ฉันขอยืนยันว่าlimitพารามิเตอร์มีประโยชน์มากกว่า

ฉันขอแนะนำให้กรองตัวเลือก "posts_per_rss" โดยตรงเช่น:

add_filter( 'option_posts_per_rss', 'my_posts_per_rss' );
function my_posts_per_rss( $option ) {
    if( isset( $_GET['limit'] ) ) {
        return (int) $_GET['limit'] ?: $option;
    }
    return $option;
}

จากนั้นสามารถเข้าถึงฟีดได้เช่น: http://example.org/category/acme/feed/?limit=999

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.