עיצוב של RSS בוורדפרס

אם אתם צריכים לבצע אינטגרציה/אוטומציה עם אתר וורדפרס לקריאה בלבד, כדאי להכיר את הדרך הפשוטה לשינוי RSS.

למי שלא יודע, RSS (בעברית ר.ס.ס) זה ראשי תבות של Rich Site Summary ומדובר ב-xml פשוט. וורדפרס מייצר אותו באופן אוטומטי בכתובת feed/ וגם באתר הזה.

אם תסתכלו על הר.ס.ס של האתר הזה תוכלו להבין מייד מה קורה פה. מדובר בקובץ xml. כלומר עם <תגיות>פתוחות וסוגרות</תגיוות> עם פרטים שונים על הפוסטים. כמו description, או title.

אבל למה צריך את זה? בעבר היו המון אנשים (עכשיו הרבה פחות) שמשתמשים בקורא RSS כדי להתעדכן בתכנים חדשים. במקום להכנס לאתר היו פותחים את קורא הר.ס.ס שלהם ורואים מה התעדכן ומה לא. היום הרבה פחות תודות לרשתות החברתיות שהרסו את הכל.

אבל ר.ס.ס לא מת. למה לא? בגלל האינטגרציה. מה זאת אומרת? אם יש לכם אתר וורדפרס שמתממשק למערכות חיצוניות, הכי קל לעשות את זה עם הר.ס.ס. אם אתם עובדים עם מיילצ'ימפ למשל, או עם שירות השוואת מחירים או בוטים ושירותים שונים שמפרסמים אוטומטיים בכל עדכון חדש., עושים את זה לא מעט פעמים עם ה-ר.ס.ס. אם אתם בוני אתרים והלקוח רוצה לשנות את הר.ס.ס – זו הסיבה.

עם וורדפרס אפשר ליצור ממש בקלות פיד ר.ס.ס מותאם לכל אינטגרציה. מה זאת אומרת? אם למשל אני רוצה פיד ר.ס.ס למיילצ'ימפ, אני יכול ליצור אחד בכתובת https://internet-israel.com/feed/mwbfeed ואם אני רוצה פיד ר.ס.ס לשירות השוואת מחירים, אני יכול ליצור אחד בכתובת https://internet-israel.com/feed/compare.

למה זה טוב?

אני השתמשתי בזה במיילצ'ימפ. במשך שנים שיגע אותי שאין תמונה בפיד הר.ס.ס שלי שמתרגם למייל אוטומטי על עדכונים במיילצ'ימפ לקוראי האתר. ואז השתמשתי בפיד ר.ס.ס ספציפי למיילצ'ימפ שבתיאור שלו היה את התמונה.

איך עושים את זה?

כרגיל בוורדפרס, אפשר עם תוסף או ב-functions.php של התבנית (theme) העיצובית. באופן הכי פשוט. ראשית, הנה הקוד המלא – אפשר להדביק ולשנות. בהמשך אני מסביר. אבל מי שרוצה ת'כלס? זה הת'כלס:

feedurl זו הכתובת המותאמת אישית של הפיד הוא יהיה זמין ב yoursite.com/feed/feedurl – שימו לב שיש פה /feed/.

function add_mail_feed() {
    add_feed( 'feedurl', 'mail_feed' );
}
add_action( 'init', 'add_mail_feed' );
 
function mail_feed() {
    header( 'Content-Type: application/rss+xml' );
    echo get_template_part( 'rss' , 'webmail' );
}

הקובץ של ה-xml יהיה בשם rss-webmail.php והוא ימוקם בתיקית התבנית שלכם (אני מקווה שאתם עובדים עם תבנית בת).

<?php
/**
 * Template Name: Custom RSS Template - webmail-rss
 */
$postCount = 5; // The number of posts to show in the feed
$posts = query_posts('showposts=' . $postCount);
header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true);
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
?>
<rss version="2.0"
        xmlns:content="http://purl.org/rss/1.0/modules/content/"
        xmlns:wfw="http://wellformedweb.org/CommentAPI/"
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
        xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
        <?php do_action('rss2_ns'); ?>>
<channel>
        <title><?php bloginfo_rss('name'); ?> - Feed</title>
        <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
        <link><?php bloginfo_rss('url') ?></link>
        <description><?php bloginfo_rss('description') ?></description>
        <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
        <language><?php echo get_option('rss_language'); ?></language>
        <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
        <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
        <?php do_action('rss2_head'); ?>
        <?php while(have_posts()) : the_post(); ?>
                <item>
                        <title><?php the_title_rss(); ?></title>
                        <link><?php the_permalink_rss(); ?></link>
                        <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
                        <guid isPermaLink="false"><?php the_guid(); ?></guid>
                        <description><![CDATA[<p><?php echo get_the_post_thumbnail( $post->ID, 'full', array( 'style' => 'max-width: 100%; height: auto;', 'height' => 'auto' ) ) ?></p><div style='direction:rtl; text-align: right;'><?php the_excerpt_rss() ?></div>]]></description>
                        <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
                        <?php rss_enclosure(); ?>
                        <?php do_action('rss2_item'); ?>
                </item>
        <?php endwhile; ?>
</channel>
</rss>

זה קובץ תבנית שאפשר להשתמש בו.

לממהרי הקופי&פייסט, זה מספיק. למי שלא עובד – גללו למטה לפתרון תקלות נפוצות.

אבל לפני זה הנה ההסבר המלא על כל חלק:

function add_mail_feed() {
    add_feed( 'feedurl', 'mail_feed' );
}
add_action( 'init', 'add_mail_feed' );
 

פה אני פשוט יוצר פונקציה שיוצרת /feed/feedurl. היא רצה בהתחלה של כל טעינה, יוצרת feedurl תחת feed שמה שמכיל אותו הוא mail_feed.

function mail_feed() {
    header( 'Content-Type: application/rss+xml' );
    echo get_template_part( 'rss' , 'webmail' );
}

זו הפונקציה שמחזירה את התוכן של הקובץ. אני שם header שמצהיר על כך שמדובר בקובץ rss-xml ומדפיס את הקובץ rss-webmail.php. זה הכל.

בעיות נפוצות שהיו לי:

⚠️ עושה את הכל, נכנס ל mysite.com/feed/feedurl ומקבל 404.

תכנסו אל הגדרות -> מבנה קישורים ותשמרו אותו שוב (איי שיט יו נוט). זה פשוט עושה פלאשינג לרשימת ה-urlים.

⚠️ משנה את קובץ rss-webmail.php וכלום לא משתנה!

הדפדפן שומר בקאש את דף הפיד, בצעו ריפרוש קשה (כרום/פיירפוקס: קונרטול F5 בחלונות, שיפט קומנד R במק) או שיפט ולחיצה על אייקון הריפרוש.

פוסטים נוספים שכדאי לקרוא

פתרונות ומאמרים על פיתוח אינטרנט

עבודה עם GPT למתכנתים

אני עובד עם GPT כמה חודשים טובים באופן צמוד. הוא כלי חזק וכדאי ממש להשתמש בו, אבל יש לו גם חסרונות ומגבלות שכדאי להכיר.

פתרונות ומאמרים על פיתוח אינטרנט

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

פייתון

קבצי קונפיגורציה בפואטרי

הגדרות שמשנות את ההתנהגות של פואטרי באמצעות קבצי הגדרות גלובליים, לוקליים ואפילו משתני סביבה.

פיתוח ב-JavaScript

Axios interceptors

תכנון נכון של קריאות AJAX באפליקציה ריאקטית וניהול השגיאות או ההצלחות עם פיצ׳ר נחמד של axios

גלילה לראש העמוד