۱۰ هک و کد کاربردی برای حرفه ای کردن خوراک rss وردپرس
rss, feed یا به عبارتی خوراک سایت ابزاری برای دنبال کردن مطالب سایت ها و وبلاگ ها می باشد. قبل از اینکه google reader از بین برود کاربران زیادی از طریق rss محتوای جدید سایت ها را دنبال می کردند اما پس از نابودی گودر کاربران به سرویس های دیگری مثل feedly پناه آوردند که تا حدودی شبیه به گودر بودند. به هر حال rss سایت ها هنوز هم طرف داران خاص خودش را دارد که تعدادشان نیز کم نیست به همین دلیل با اهمیت دادن به خوراک سایت خود می توانید کاربران بیشتری را جذب کنید. در ادامه این مطلب از سری مطالب هک و کد وردپرس سایت روکش با ما همراه باشید تا با ۱۰ هک و نکته کاربردی که می توانند خوراک rss سایت شما را متحول کنند آشنا شوید.
۱. افزودن تصویر شاخص به خوراک RSS وردپرس
در حالت پیشفرض خوراک اکثر سایت ها به صورت متنی می باشند. وجود متن تنها می تواند کاربر را از خواندن تمامی محتوای آن مطلب منصرف کند. اما اگر تصویری برای هر مطلب در نظر گرفته شود, باعث می شود تا کاربر سریعتر با مطلب ارتباط برقرار کند و تشویق به خواندن ادامه مطلب شود. RSS پیشفرض سیستم مدیریت محتوای وردپرس نیز به صورت متنی می باشد, برای اینکه در feed وردپرس نوشته ها دارای تصویر شوند ما می توانیم از تصاویر شاخص استفاده کنیم. به این صورت که تصاویر شاخصی که برای مطالب قرار می دهیم را در rss نیز درج نماییم. برای این کار تنها کافی است تا کد زیر را در فایل فانکشن قالب فعلی یا افزونه اختصاصی سایت خود قرار دهید.
function rokesh_post_thumbnail_feeds($content) { global $post; if(has_post_thumbnail($post->ID)) { $content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content; } return $content; } add_filter('the_excerpt_rss', 'rokesh_post_thumbnail_feeds'); add_filter('the_content_feed', 'rokesh_post_thumbnail_feeds');
فقط به این نکته توجه داشته باشید که کدهای بالا حتما باید بین تگ باز و بسته php قرار گیرند. همچنین برای اینکه مشکلی برای سایت شما بوجود نیاید بهتر است تا قبل از انجام این تغییرات از فایل functions.php یک نسخه پشتیبان تهییه نمایید.
۲. ایجاد تاخیر در انتشار مطالب در خوراک RSS وردپرس
برخی از اوقات اندکی پس از انتشار مطلبی, متوجه اشکالی در آن می شوید, اما با توجه به اینکه آن مطلب بلافاصله پس از زدن دکمه انتشار در خوراک وردپرس منتشر شده است دیگر نمی توانید آن را اصلاح کنید. همچنین به تازگی تعداد سایت هایی که محتوای سایت ها را از طریق rss کپی و در سایت خود منتشر می کنند افزایش یافته است و خیلی موارد دیگر که بهتر است برای رفع این قبیل مشکلات به دنبال یک روش موئثر باشیم. یکی از روش های موئثری که می تواند تا حدودی این مشکلات را رفع کند ایجاد تاخیر در انتشار مطالب در RSS سایت می باشد. برای این کار کافی است تا کد زیر را در فایل فانکشن قالب قرار دهید.
* /** * * puplish the content in the feed later * * $where ist default-var in WordPress (wp-includes/query.php) * * This function an a SQL-syntax * */ * function publish_later_on_feed($where) { * global $wpdb; * * if ( is_feed() ) { * // timestamp in WP-format * $now = gmdate('Y-m-d H:i:s'); * * // value for wait; + device * $wait = '5'; // integer * * // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff * $device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR * * // add SQL-sytax to default $where * $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait "; * } * return $where; * } * * add_filter('posts_where', 'publish_later_on_feed');
در حالت پیشفرض این هک باعث می شود ۵ دقیقه اختلاف بین زمان ارسال مطلب در سایت و Rss ایجاد شود. برای تغییر مدت زمان تاخیر می توانید عدد ۵ موجود در این هک را تغییر دهید.
۳. افزودن المان های مختلف به خوراک RSS
با استفاده از این هک می توانید یک لینک برای بازگشت به سایت, کمی تبلیغات, دکمه شبکه های اجتماعی و در کل هر چیزی که دوست داشته باشید را به خوراک سایت خود اضافه کنید. برای این کار کافی است تا کد زیر را در فایل functions.php قرار دهید.
<?php function insertAds($content) { $content = $content.'<hr /><a href="http://www.rokesh.ir">به روکش بازگردید</a><hr />'; return $content; } add_filter('the_excerpt_rss', 'insertAds'); add_filter('the_content_rss', 'insertAds'); ?>
برای مثال ما در اینجا کد html زیر را قرار دادیم که شما می توانید آن را به هرچیزی که دوست داشتید تغییر دهید.
<hr /><a href="http://www.rokesh.ir">به روکش بازگردید</a><hr />
۴. محروم کردن انتشار مطالب یک دسته در rss وردپرس
اگر شما دسته ای دارید که نمی خواهید مطالب آن در feed اصلی سایت شما منتشر شود می توانید از این هک استفاده کنید.
function myFilter($query) { if ($query->is_feed) { $query->set('cat','10'); //Don't forget to change the category ID =^o^= } return $query; } add_filter('pre_get_posts','myFilter');
کد بالا را باید در فایل فانکشن قرار دهید. برای تعیین دسته یا دسته هایی که می خواهید از rss حذف شوند هم باید ID آن دسته را به جای عدد ۱۰ وارد کنید. برای تعیین چند دسته هم می توانید از کاما در بین آنها استفاده کنید.
۵. ساخت پست هایی اختصاصی برای مشترکین rss وردپرس
اگر دوست دارید برخی از مطالب را تنها به مشترکین rss سایت خود نشان دهید (مثلا برای افزایش تعداد مشترکین یا اطلاع دادن خبری به آنها) نیاز به ساخت یک دسته دارید که آن مطالب را در آن دسته منتشر کنید و ID آن دسته را در کد زیر قرار دهید.
// show post thumbnails in feeds function diw_post_thumbnail_feeds($content) { global $post; if(has_post_thumbnail($post->ID)) { $content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content; } return $content; } add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds'); add_filter('the_content_feed', 'diw_post_thumbnail_feeds');
سپس این کد را در فایل فانکشن کپی کنید تا مطالبی که از این به بعد در این دسته منتشر می شوند تنها برای مشترکین rss به نمایش در آیند.
۶. استفاده از فید سایت های دیگر
این تکه کد سودمند از تجزه کننده فید وردپرس برای نمایش فید یک سایت دیگر در فید سایت شما استفاده می کند.
http://www.wprecipes.com/how-to-display-any-rss-feed-on-your-wordpress-blog
۷. نمایش میانگین خوانندگان خوراک وردپرس توسط Feedburner
اگر شما هم از Feedburner برای خوراک rss سایت خود استفاده می کنید باید به این نکته توجه داشته باشید که در آیکن قیدبرنر تعداد خوانندگان یک روز قبل خوراک سایت شما نشان داده می شود, اما اگر می خواهید میانگین خوانندگان در ۷ روز گذشته را نشان دهید این هک می تواند به شما کمک کند. کد زیر را در فایل functions.php قالب قرار دهید.
function get_average_readers($feed_id,$interval = 7){ $today = date('Y-m-d', strtotime("now")); $ago = date('Y-m-d', strtotime("-".$interval." days")); $feed_url="https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=".$feed_id."&dates=".$ago.",".$today; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $feed_url); $data = curl_exec($ch); curl_close($ch); $xml = new SimpleXMLElement($data); $fb = $xml->feed->entry['circulation']; $nb = 0; foreach($xml->feed->children() as $circ){ $nb += $circ['circulation']; } return round($nb/$interval); }
حال کد زیر را در هر جایی که می خواهید میانگین خوانندگان rss نشان داده شوند قرار دهید. توجه داشته باشید که به جای rokesh اسم feed سایت خود را وارد کنید.
<?php $nb = get_average_readers('rokesh'); echo "I have ".$nb." RSS readers"; ?>
۸. جداسازی خوراک وردپرس برای پست های سفارشی
اگر می خواهید به فید اختصاصی یک پست سفارشی لینک دهید می توانید از ساختار زیر استفاده کنید:
http://www.yoursite.com/feed/?post_type=book
همچنین می توانید خروجی فید را از یک پست سفارشی و یک دسته به شکل زیر بگیرید
http://www.yoursite.com/feed/?post_type=book&genre=romance
۹. غیر فعال کردن کامل خوراک های RSS وردپرس
اگر سایتی ساخته اید که نیازی به استفاده از rss برای آن ندارید, خیلی راحت با افزودن کد زیر به فایل فانکشن پوسته فعلی می توانید تمامی rss های وردپرس را غیر فعال کنید.
/** * disable RSS feed */ function wp_disable_feed() { wp_die( __('Sorry, no feeds available, return to <a href="'. get_bloginfo('url') .'">homepage</a>') ); } add_action('do_feed', 'wp_disable_feed', 1); add_action('do_feed_rdf', 'wp_disable_feed', 1); add_action('do_feed_rss', 'wp_disable_feed', 1); add_action('do_feed_rss2', 'wp_disable_feed', 1); add_action('do_feed_atom', 'wp_disable_feed', 1);
۱۰. ساخت خوراک RSS تعریف شده
اگر شما به یک خوراک RSS دلخواه نیاز دارید, برای مثال, یک فید که فقط شامل مطالب یک سری دسته و برچسب خاص شود یا اگر تمامی خوراک های Rss را به Feedburner انتقال داده اید و می خواهید هنوز فید یک دسته بندی خاص را داشته باشید, راه کار استفاده از قالب برگه های وردپرس می باشد. کد زیر را در یک فایل به نام custom-feed.php ذخیره و آن را در فولدر قالب سایت خود قرار دهید. سپس از طریق بخش مدیریت وردپرس یک برگه جدید ایجاد کنید و آن را بدون درج محتوا ذخیره کنید, سپس custom-feed.php را به عنوان قالب آن برگه انتخاب نمایید.
<?php /* Template Name: Custom Feed */ $numposts = 5; function rokesh_rss_date( $timestamp = null ) { $timestamp = ($timestamp==null) ? time() : $timestamp; echo date(DATE_RSS, $timestamp); } function rokesh_rss_text_limit($string, $length, $replacer = '...') { $string = strip_tags($string); if(strlen($string) > $length) return (preg_match('/^(.*)\W.*$/', substr($string, 0, $length+1), $matches) ? $matches[1] : substr($string, 0, $length)) . $replacer; return $string; } $posts = query_posts('showposts='.$numposts); $lastpost = $numposts - 1; header("Content-Type: application/rss+xml; charset=UTF-8"); echo '<?xml version="1.0"?>'; ?><rss version="2.0"> <channel> <title>مطالب جدید روکش</title> <link>http://rokesh.ir/</link> <description>جدیدترین مطالب منتشر شده در وبلاگ روکش</description> <language>en-us</language> <pubDate><?php rokesh_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></pubDate> <lastBuildDate><?php rokesh_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></lastBuildDate> <managingEditor>info@rokesh.ir</managingEditor> <?php foreach ($posts as $post) { ?> <item> <title><?php echo get_the_title($post->ID); ?></title> <link><?php echo get_permalink($post->ID); ?></link> <description><?php echo '<![CDATA['.rokesh_rss_text_limit($post->post_content, 500).'<br/><br/>ادامه مطلب: <a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'.']]>'; ?></description> <pubDate><?php rokesh_rss_date( strtotime($post->post_date_gmt) ); ?></pubDate> <guid><?php echo get_permalink($post->ID); ?></guid> </item> <?php } ?> </channel> </rss>
خیلی عالی بود ممنون
آگر امکان داره یک آموزش جامعی درباره ی این سیستم بزارید من چند بار سعی کردم اما یکم انگار پیچیده هست چند تا آموزشم بود ولی برای نسخه های قدیمی ترش بود بزارید خیلی ممنون میشم! mailchimp.com
چشم, این آموزش هم در صف انتشار قرار می گیره و امیدوارم بتونم به زودی اون را منتشر کنم.
خب اگه میشه سریعتر بزارید چون من خیلی لازم دارم!
ممنون عالی بود
ممنون بابت مطلبتون : )
ممنون جالب بود
مرسییییییییییییییی
سلام.
راه حلی برای آدرس فید سراغ ندارید؟ مثلا:
site.com/myfeed
ممنون
می تونید از feedburner کمک بگیرید
سلام
ممنون از سایت خوبت ، امیدوارم همیشه با انرژی باشی آقا سعید.
یک سوال
من اگه بخوام فونت خاصی به فید اضافه کنم چطوری میتونم؟
روزت خوش
ببخشید در این مورد اطلاعی ندارم
ممنون خیلی بدردم خورد
مثل همیشه عالی بودید – ممنون از اینکه اطلاعات و دانش خودتون رو به صورت رایگان در اختیار همه قرار میدید . با سپاس فراوان
سلام چطور میتونم غید سایتمو بخ
http://www.mysite.mydomin/feed
تبدیل کنم پلاگین خاصی هست؟؟
می تونید از قید برنز استفاده کنید. آموزش انتقال آدرس فیلتر شده feedburner به دامین شخصی در همین رابطه داخل سایت وجود داره.
ممنون بخاطر مطالب خوبتون، فقط راهی هست که با کد آخری بشه مطالب یک دسته یا برگه خاص رو نمایش داد؟
بله چرا نشه, شما می تونید از یک دسته یا برگه خاص کوئری بگیرید و محتویاتش را داخل این صفحه قرار بدید.
سلام
میشه این کد رو برای رزبلاگ هم بزارید یا به ایمیلم ارسال کنید ممنون
دوست عزیز کار ما فقط وردپرسه ، امکانش نیست متاسفانه