ความยาวรายการฟีด RSS ส่วนตัวสำหรับหมวดหมู่?


9

ฉันรู้วิธีดึงฟีด rss2 จากหมวดหมู่ใน wp คือเพิ่ม/feedไว้ด้านหลังชื่อหมวดหมู่ อย่างไรก็ตามเมื่อฉันทำสิ่งนี้รายการทั้งหมดจากฟีดนั้นไม่รวมอยู่ใน RSS นี่เป็นเพราะฉันตั้งค่าการ จำกัด ฟีดเป็น 50 ที่แบ็กเอนด์ของผู้ดูแลระบบ

ฉันต้องการทราบว่าสามารถตั้งค่าความยาวฟีดแยกแต่ละประเภท / ฟีดได้หรือไม่

ฉันไม่พบการตั้งค่า api สำหรับขนาดของฟีด ... ยินดีต้อนรับความช่วยเหลือใด ๆ ที่นี่

ขอบคุณสำหรับความช่วยเหลือของคุณ.


Stephen Harris และ CodeMonkey คำตอบทั้งสองใช้ไม่ได้กับหมวดหมู่ใดหมวดหมู่หนึ่งใช่หรือไม่ ไม่อย่างนั้นคำตอบทั้งสองจะทำงานได้ผลสำหรับฉัน เหตุใดจึงเป็นเพราะมันใช้งานไม่ได้กับหมวดหมู่เดียวเท่านั้น?
mahatmanich

คำตอบ:


8

คุณควรจะสามารถใช้pre_get_postsและตั้งค่าเป็นposts_per_page50 เงื่อนไข (ในการเป็นฟีดสำหรับหมวดหมู่) แต่น่าเสียดายที่มีนี้ตั๋ว Trac ยังไม่ได้แก้ไข

การหลีกเลี่ยงปัญหาเพียงอย่างเดียวคือทำการเชื่อมต่อpost_limitsและแทนที่LIMITส่วนของแบบสอบถาม SQL โดยตรง

add_action('post_limits','wpse71759_category_rss_limit',10,2);
function wpse71759_category_rss_limit($limit, $query){

     if( $query->is_feed() && $query->is_category() ){
          $paged =  $query->get('paged') ? (int) $query->get('paged') : 1;
          $per_page = 50;
          $page_start = ($paged-1)*$per_page;

          return "LIMIT $page_start, $per_page";
     }
     return $limit;
}

เฮ้สตีเฟ่นฉันจะมองเข้าไปในนั้นจริง ๆ แล้วฉันต้องการรายการทั้งหมดจากหมวดหมู่ในฟีดและเฉพาะในหน้าบล็อกของฉันฉันต้องการข้อ จำกัด ของขีด จำกัด ที่ฉันตั้งไว้ในส่วนหลังฉันจะทำอย่างไร
mahatmanich

ในกรณีนั้นreturn "";มากกว่าที่"LIMIT $page_start, $per_page"ควรจะทำ
Stephen Harris

เฮ้คุณสามารถอธิบายรหัสของคุณได้บ้างไหม? ฉันไม่แน่ใจว่านั่นเป็นสิ่งที่ฉันต้องการในสิ่งที่คุณเสนอให้หรือไม่
mahatmanich

ดังนั้นสำหรับฟีดหมวดหมู่คุณต้องการส่งคืนโพสต์ทั้งหมด - ดังนั้นคุณไม่ต้องการเป็นLIMITส่วนหนึ่งของการสืบค้นของคุณ ตัวกรองด้านบนช่วยให้คุณสามารถแทนที่LIMITส่วนด้วยสตริงว่างเพื่อให้ sql ที่ได้นั้นจะดึงข้อมูลการโพสต์ทั้งหมด
Stephen Harris

1
ใช่ แต่ฉันขอแนะนำให้สร้างปลั๊กอินจากมัน ( wpcandy.com/teaches/how-to-create-a-functionality-plugin )
Stephen Harris

2
add_filter('query', 'sql_query_feed_filter');
function sql_query_feed_filter($sql){
    global $wp_query;

    if ($wp_query->is_feed == true &&  isset($wp_query->query_vars['custom_taxonomy']) &&  in_array($wp_query->query_vars['custom_taxonomy'], array('slug1','slug2')) ){
        if (strpos($sql, 'SELECT SQL_CALC_FOUND_ROWS') !== false){
            list($sql,) = explode('LIMIT', $sql);
        }
    }
    return $sql;
}

สิ่งที่คุณต้องทำคือเพียงแค่แก้ไขฟังก์ชั่นนี้และ repalce taxonomy ตามหมวดหมู่ taxonomy ของคุณและแก้ไขกระสุนไปที่หมวดหมู่ของคุณ ...


คุณสนใจอธิบายรหัสของคุณหรือไม่
mahatmanich

ตัวกรองเคียวรี SQL แบบง่ายที่ทริกเกอร์ฟีด ($ wp_query-> is_feed == จริง) หากพบ taxonomy เฉพาะ ($ wp_query-> query_vars ['custom_taxonomy'] custom_taxonomy ในตัวอย่าง) ['custom_taxonomy'] == 'กระสุน') หากทุกสิ่งที่เกิดขึ้นและเป็นจริง (บน site.com/your-custom-feed-for-category.xml) คุณจะไม่ได้รับผลลัพธ์ที่ จำกัด ในฟีดของคุณ ($ SQL SQL หารด้วยค่า LIMIT ซึ่งหมายความว่ามันส่งคืนโดยไม่มี LIMIT ล่าสุด ผู้ประกอบการ ... ไม่ จำกัด . รายการทั้งหมดต่อ RSS)
Oleg Butuzov

ฉันจะวางรหัสนั้นได้ที่ไหน function.php ในธีมของฉัน
mahatmanich

functions.php อย่างลงตัวพอดี แต่เปลี่ยนกระสุนและชื่ออนุกรมวิธานที่กำหนดเองก่อน และล้างแคชเบราว์เซอร์ก่อนการทดสอบ (RSS Feeds แคชโดยเบราว์เซอร์)
Oleg Butuzov

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