آموزش سفارشی کردن و اعمال تغییرات در خروجی فید وردپرس
احتمالا شما هم به خوبی میدانید که فید ها هنوز شیوه ای محبوب برای دنبال کردن مطالب وبسایتها هستند و اینجوری که به نظر می آیند این رویه دست کم طی یکی دو سال آینده و شاید هم بیشتر ادامه خواهد داشت. بنابراین بدون شک، سفارشی سازی فید وبسایت وردپرسی شما، در کنار انتشار مطالب خوب و مناسب و جذاب برای کاربران میتواند کمک شایان توجهی به افزایش خوانندگان وبسایت شما بکند.
در این آموزش قصد داریم با هم روشهای سفارشی سازی و اعمال تغییرات دلخواه در خروجی فید وبسایتهای وردپرسی را بررسی کنیم. در پایان این مقاله قادر خواهید بود کارهای زیر را انجام دهید :
- کاری کنید که برگه های وبسایتتان هم در خروجی فید RSS شما نمایش داده شوند.
- به خروجی فیدتان تصاویر بند انگشتی اضافه کنید
- از نمایش نوشته هایی که دارای یک برچسب خاص هستند در فید وبسایتتان جلوگیری کنید.
- تعداد نوشته های نمایش داده شده در فید را به دلخواه خود تغییر دهید.
- فقط نوشته های دسته بندی خاصی را در فید خود نمایش دهید.
- نوشته یا محتوای دلخواهی را به پایان هر مطلب در فید RSS تان اضافه کنید. (مثلا تبلیغ یا لینک به سایت خودتان و …)
خوب تصمیم داریم زود دست به کار بشویم و سراغ اصل مطلب برویم. فقط توجه داشته باشید که هر کدی که به شما ارائه میکنیم، جایش در فایل functions.php پوسته ی جاری وبسایت شماست. بنابراین اگر احیانا از پوسته ای استفاده میکنید که این فایل را ندارد. کافی است یک فایل با نام functions.php ایجاد کرده و آن را در فولدر اصلی پوسته ی سایت خود قرار دهید. تگ شروع و پایان php هم فراموش نشود.
نمایش برگه ها در فید سایت
به طور معمول، وردپرس تنها پست های شما در خروجی فید شما به نمایش در خواهد آورد. اما اگر لازم میدانید که برگه هایتان را هم در خروجی فیدتان نمایش دهید، کافی است کد زیر استفاده کنید :
1 2 3 4 5 6 7 | function feedFilter($query) { if ($query->is_feed) { $query->set('post_type','any'); } return $query; } add_filter('pre_get_posts','feedFilter'); |
استفاده از کد بالا باعث میشود که نوشته ها و برگه ها، هر دو در فید شما نمایش داده شود. حالا شاید مایل باشید که فقط و فقط برگه ها را در فید نمایش دهید. این کار هم بسیار ساده است. کافی است در خط سوم، بجای any بنویسید page و تمام! البته این مسئله فقط محدود به صفحات نیست و شما میتوانید هر نوع پست سفارشی ای که ایجاد کرده اید را جایگزین آن کنید.
حالا فرض کنیم که قرار است فقط صفحه های رده ی اول را در فید نمایش دهیم و به زیر صفحه ها کاری نداشته باشیم. برای این کار کد بالا را به شکل زیر تغییر میدهیم :
1 2 3 4 5 6 7 8 | function feedFilter($query) { if ($query->is_feed) { $query->set('post_type','any'); $query->set('post_parent','0'); } return $query; } add_filter('pre_get_posts','feedFilter'); |
اضافه کردن تصاویر بند انگشتی به فید RSS
خوب ایندفعه نحوه ی کارمان کمی متفاوت است. بر عکس دفعه ی قبل، ایندفعه قرار نیست کوئری فیدمان را دست کاری کنیم. ایندفعه قرار است روی محتوای شما (the_content) یک فیلتر اضافه کنیم تا نتیجه ی دلخواهمان را به ما بدهد :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function feedFilter($query) { if ($query->is_feed) { add_filter('the_content', 'feedContentFilter'); } return $query; } add_filter('pre_get_posts','feedFilter'); function feedContentFilter($content) { $thumbId = get_post_thumbnail_id(); if($thumbId) { $img = wp_get_attachment_image_src($thumbId); $image = '<img align="right" src="'. $img[0] .'" alt="" width="'. $img[1] .'" height="'. $img[2] .'" />'; echo $image; } return $content; } |
همانطور که در کد بالا مشاهده میکنید، ما یک استایل درون خط هم به تصویر بند انگشتیمان اضافه کرده ایم تا به وسیله ی آن بتوانیم تصویر را در سمت راست نمایش دهیم. شما میتوانید این استایل را به دلخواه خود ویرایش نمایید تا به نتیجه ی مورد نظر خود برسید.
خوب حالا فرض کنیم که از قبل سایز تصاویر بند انگشتی را برای نمایش در فید به شکل زیر تعریف کرده باشیم :
1 | add_image_size('feed', 600, 100, true); |
در این حالت کافی است خط 13 ام از کد بالا را به شکل زیر تغییر دهید تا تابع از سایز تصاویر تعریف شده توسط شما استفاده کند :
1 | $img = wp_get_attachment_image_src($thumbId, 'feed'); |
جلوگیری از نمایش نوشته های دارای برچسب خاص
این بار هم مثل دفعه ی اول قرار است کوئری خود را کمی دستکاری کنیم. چیزی که اینجا نیاز داریم استفاده از set است که به ما اجازه میدهد به نتایج دلخواه خود دست پیدا کنیم. پیش از اینکه کار را ادامه دهیم، در صورت نیاز میتوانید با کلیک بر روی اینجا کمی درباره کوئری ها مطالعه کرده و اطلاعات کسب کنید.
خوب، حالا برای ادامه ی کار نیاز به ID برچسب هایمان داریم. پیدا کردن این ID ها بسیار ساده است. برای این کار کافی است از منوی “نوشته ها” وارد منوی “برچسب ها” شوید. برچسب مورد نظر خود را انتخاب کرده و وارد آن شوید. حالا به آدرسی که در نوار آدرس مرورگر شما ظاهر شده توجه کنید. تقریبا در وسط های آدرس باید چیزی شبیه tag_ID=64 ببنید که البته عدد جلوی آن با عددی که من نوشته ام متفاوت خواهد بود. این ID برچسب مورد نظر شماست که الان قرار است از آن استفاده کنیم. حالا با فرض اینکه من نمیخواهم برچسب های 56، 64 و 110 را نمایش دهم، کد خودم را به شکل زیر مینویسم :
1 2 3 4 5 6 7 8 9 | function feedFilter($query) { if ($query->is_feed) { $tags = array('56', '64', '110'); $query->set('tag__not_in', $tags); } return $query; } add_filter('pre_get_posts','feedFilter'); |
اگر دلتان بخواهد میتوانید اینجا فقط یک برچسب را انتخاب نمایید. الزامی نیست که حتما چند برچسب مورد نظر شما باشد.
تغییر تعداد آیتم های نمایش داده شده در فید
این بخش مطلب خاصی ندارد و همین الان هم بدون یک خط کد نویسی میتوانید با انتخاب گزینه “خواندن” از منوی تنظیمات وردپرس، تعداد آیتم های فید خود را بر اساس نیاز خود تغییر دهید. ولی خوب حالا فرض کنیم یک اتفاق عجیبی افتاد یا حالا به هر دلیلی مایل بودید بدانید پشت قضیه چه اتفاقی در جریان است و از این جور صحبت ها، در اینجا کافی است برای تنظیم تعداد نوشته ها در فیدتان از کد زیر استفاده کنید :
1 2 3 4 5 6 7 8 | function feedFilter($query) { if ($query->is_feed) { $query->set('posts_per_page','25'); } return $query; } add_filter('pre_get_posts','feedFilter'); |
در کد بالا کافی است عدد 25 را به عدد دلخواه خود تغییر دهید.
نمایش نوشته ها فقط از دسته ای خاص در فید
خوب حالا میخواهیم خروجی فید را به نحوی تغییر دهیم که فقط نوشته های دسته بندی خاصی را به نمایش در بیاورد. برای نوشتن کدی که مد نظر داریم، میتوانیم از نام دسته بندی هم استفاده کنیم ولی معمولا در وبسایت های فارسی این کار، کار جالبی نیست. بجای این کار از ID دسته بندی استفاده میکنیم اما خوب تصمیم با شماست. ID دسته بندی ها را هم به همان شیوه ای که قبلا با هم مرور کردیم میتوانید به دست بیاورید. حالا با فرض اینکه دسته بندی مورد نظر ما دارای ID شماره 105 باشد، کدمان را به شکل زیر مینویسیم :
1 2 3 4 5 6 7 8 | function feedFilter($query) { if ($query->is_feed) { $query->set('cat', '105'); } return $query; } add_filter('pre_get_posts','feedFilter'); |
حالا یک وقتها ممکن است برعکس قضیه اتفاق بیافتد. یعنی ممکن است دلتان بخواهد نوشته های دسته ای خاص در فید شما ظاهر نشوند. این کار هم بسیار ساده است. کافی است در هنگام نوشتن کد بالا، یک علامت منها به پشت ID دسته بندی اضافه کنید، چیزی مانندن خط زیر خواهید داشت :
1 | $query->set('cat', '-105'); |
جایگزین کردن خط بالا با خط شماره 3 فیلتری که نوشته ایم باعث میشود نوشته های دسته بندی شماره 105 در فید شما نمایش داده نشوند. علامت منها را هم فراموش نکنید.
نمایش محتوای خاص در انتهای فید RSS وبسایتتان
این کار یکی از مهم ترین کارهایی است که میتوانید انجام دهید. (یا یکی از بهترین بلاهایی است که میتوانید سر فیدتان بیاورید!) البته خیلی از افزونه ها مانند WordPress SEO By Yoast این کار را برایتان به سادگی انجام میدهند ولی خوب شاید شما عضوی از جنبش ضد افزونه (؟) باشید و یا شاید مثل مسترکد دلتان بخواهد بدانید هر چیزی چگونه اتفاق می افتد.
در کد اول قصد داریم به سادگی خواننده را به مراجعه مجدد به سایت خود ترغیب (؟) کنیم ، کد خود را به شکل زیر مینویسیم :
1 2 3 4 5 6 7 8 9 10 11 12 13 | function feedFilter($query) { if ($query->is_feed) { add_filter('the_content','feedContentFilter'); } return $query; } add_filter('pre_get_posts','feedFilter'); function feedContentFilter($content) { $content .= '<p>امیدواریم از این مطلب لذت برده باشید، برای خواندن مطالب بیشتر به <a href="'. get_bloginfo('url') .'">'. get_bloginfo('name') .'</a> مراجعه کنید.</p>'; return $content; } |
این کار، کار خوشمزه ای است. خصوصا برای کسانی که ممکن است به طور مستقیم فید شما را کپی کنند. اینطوری همیشه ردی از لینک اصلی در مطلب باقی میگذارید. ولی بیایید کمی خوشمزه ترش کنیم و به آن امکانات بیشتری اضافه کنیم.
فرض میکنیم شما پست های ویژه ای دارید که به آنها برچسب “ویژه” را نسبت میدهید. این بار قصد داریم خواننده را به خواندن آخرین پست ویژه ی شما دعوت کنیم :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | function feedFilter($query) { if ($query->is_feed) { add_filter('the_content','feedContentFilter'); } return $query; } add_filter('pre_get_posts','feedFilter'); function feedContentFilter($content) { $args = array( 'numberposts' => 1, 'tag' => 'featured' ); $posts = get_posts($args); if($posts) { foreach($posts as $post) { $content .= '<p>نوشته ویژه ی این هفته را از دست ندهید : <a href="'. get_permalink($post->ID) .'">'. $post->post_title .'</a>!</p>'; } } return $content; } |
این ترفند آخر، یعنی اضافه کردن محتوا به انتهای فید، میتواند خیلی برایتان مفید باشد. با همین روش میتوانید به سادگی به انتهای فید خود تبلیغ هم اضافه کنید.
و اما تمامی ترفند هایی که در این مقاله به شما آموزش دادیم، روی فید اصلی وبسایت شما تاثیر میگذارند. اما شاید شما نیاز داشته باشید که یک فید سفارشی ویژه، جدا از فید اصلی سایت برای خودتان بسازید. مشکلی نیست. در ارسالهای بعدی همراه مستر کد باشید تا روش انجام این کار را نیز با هم مرور کنیم.
راستی اگر ترفندی برای استفاده از فید وبسایت و سفارشی کردن آن بلد هستید، فراموش نکنید که در بخش نظرات آن را با ما به اشتراک بگذارید.
سلام، چطوری میشه فید رو راست چین کرد؟
سلام. گرچه توصیه نمیکنم این کار رو انجام بدید ولی این افزونه رو تست کنید بد نیست :
http://wordpress.org/plugins/rtl-feed-presian/
دلیل اینکه میگم توصیه نمیکنم اینه که اکثر ابزارهایی که کارشون خوندن فیده (مثلا feedly ) خودشون به محض اینکه زبونی رو در فید میبینن که باید RTL باشه (مثلا زبان فارسی) خودشون فید رو به صورت RTL نشون میدن و اصلا نیازی به RTL کردن فید بلاگتون نیست.
عالی بود ممنون
خواهش میکنم. لطف دارید. خوشحالم که مطلب براتون مفید بود 🙂
وب شما عالی و زیبا هست ممنون
ممنون از شما. لطف دارید
بسیار ممنون
با سلام
درود بر شما . مطلب جالبی بود.
میشه کاری کرد که فید ارسالی از جانب سایت در استایل دلخواه ارسال بشه. مثلا فید داخل یه جدول با استایل دلخواه ارسال بشه.به عبارتی می خوام بونم میشه کاری کرد که برای فید سایت یه قالب طراحی کرد.؟ مثل خبرنامه.
خیلی ممنون و سپاس.
سلام و شب بخیر
برای کار مورد نظرتون مطلب زیر رو ببینید :
http://codex.wordpress.org/Customizing_Feeds
و یا از افزونه ی زیر استفاده کنید :
http://wordpress.org/plugins/feed-template-customize/
سلام مطلبه مفیدی بود
ولی من خودم به تازگی یک پوسته ساختم و هیچی از فید توش قرار ندادم و وقتی آدرس فید رو میزنم این ارور رو میده :
This page contains the following errors:
error on line 10 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.
باید چیکار کنم تا این مشکل برطرف بشه و قالبم فید داشته باشه؟؟
هیچ کدی از فید تو قالبم قرار ندادم
سلام
در مورد مشکلتون دو تا لینک زیر رو مشاهده کنید :
http://www.quickonlinetips.com/archives/2009/05/wordpress-feed-xml-parsing-errors/
http://www.piotrkrzyzek.com/wordpress-remove-blank-line-from-rss-feed-wordpress-error-on-line-2-at-column-6-xml-declaration-allowed-only-at-the-start-of-the-document/
سلام
خسته نباشید
چگونه میشود تعداد کارکترهای نمایش داده شده در خوراک را کم کرد ؟
مثلا فقط 10 کاراکتر را در فید نمایش بدهد…
تو خبرنامه هایی که به کاربران ارسال میشه لینک دانلود نیز به نمایش در می آید که نمیخوام اینجوری بشه بلکه میخوام فقط پست اصلی بدون ادامه مطلب تو فید به نمایش در بیاد
دقیقا منظورتون رو متوجه نمیشم ولی اگر هدفتون این هست که فقط یک خلاصه از مطلب در فید نمایش داده بشه و مطلب کامل نباشه تا کاربران مجبور باشن برای خوندن مطلب کامل به وبسایت شما مراجعه کنند به شکل زیر عمل کنید :
در بخش ادمین وردپرس از منوی تنظیمات به زیر منوی خواندن مراجعه کنید.
تنظیم مربوط به نمایش فید رو پیدا کنید (احتمالا عنوانش هست "برای هر نوشته در خوراک نمایش بده") و اون رو روی "خلاصه" تنظیم کنید.
سلام
خسته نباشید
ببخشید چطوری میشه کاریکرد که تو فید به جای اینکه لینک پست ها به شکل اصلی باشه بهصورت کوتاه نمایش داده بشه؟
مثلا بجای site.com/دانلود-اهنگ-جدید
تو فید نشون بده
Site.com/?p=134
سلام خدا قوت
برادر اگر امکان داره نحوه اضافه کردن نظرات به فید رو هم قرار بدید و یا جهت سفارش این کد مد نظرم بفرمایید کجا و از چه طریقی اقدام کنم..
باتشکر فراوان
سلام
اگر منظورتون اینه که بشه روی فید نظر درج کرد، امکان پذیر نیست.
اگر منظورتون لینک فید نظراته، لینک زیر رو مشاهده کنید :
https://codex.wordpress.org/WordPress_Feeds
تشکر
منظورم اینه که فید نظرات رو به مطلب اضافه کنم
در ادامه متن مطلب در فید , نظرات همون مطلب هم توی فید مطلب نشون داده بشه
یعنی برای نظرات نخواد فید جدا تعریف کرد و بعد متن مطلب نظرات هم توی فید نشون داده بشه..
آیا امکان داره فونت خاصی به فید اضافه کنم که مثلا مطالب با این فونت نمایش داده بشن؟؟
تشکر
تا جایی که من اطلاع دارم خیر. فرمت نمایش فید دست ابزار نمایش دهندشه که طبعا هر کدوم از استایل های خودشون استفاده میکنند.
درودو خسته نباشید ممنون میشم کمکم کنید
من قالبم از ضمینه دلخواه استفاده میکنه توی فید م تصاویر پست و لینک دانلود نشون نمیده
کدش چیه بتونم تصویر پست و لینک دانلود رو توی فید اضافه کنم
سلام
میتونید از این لینک کمک بگیرید :
https://wordpress.org/support/topic/custom-fields-on-rss-feed-how-to
سلام جناب من تمام متن ها و ایتم های نوشته هام داخل فید نمایش داده نمیشه
از تنظیمات هم همه نوشته ها را انتخاب کردم اما بازم مشکل دارم!
یک نگاه به سایت من بندازین و یک تور را بازکنید ! می خوام تمام ایتم ها نمایش داده شود!
ممنون میشم کمک کنید باتشکر
سلام
چند وقته فید سایت وردپرسی من مشکل پیدا کرده و توی خروجی فقط تیتر مطلب میره و پانویس اون، ولی متن لصلی خبر ارسال نمیشه، لطفا کمکم کنید
سلام
ممکنه مشکل از قالبتون باشه و یا اینکه افزونه ای تداخلی در سایتتون ایجاد کرده باشه.
اشکال قالب محتمل تره. میتونید سوئیچ کنید به قالب اصلی وردپرس و بعد XML فیدتون رو نگاه کنید ببینید اتفاق مثبتی میفته یا خیر …
برای افزونه ها هم که باید افزونه ها رو غیر فعال کنید و بعد یکی یکی فعالشون کنید ببینید کجا مشکل پیش میاد.
طبعا بکاپ هم فراموش نشه.
سلام جناب من موقع خبر خوانی فقط تیتر و عکس نشون داده میشه و یک سری فیلد تو نوشته هام هست نمایش داده نمیشه چون سفارشی اینا ثبت میشه توسط کاربر یک نگاه به سایتم بندازین ببین مشکل چیه(قسمت تورها) ممنون میشم کمکم کنید. اگر برام انجامش بدین حاضرم هزینش رو پرداخت کنم. باتشکر
سلام
اگر مشکلتون عدم نمایش زمینه های دلخواه هست، افزونه ی زیر رو چک کنید احتمالا کمکتون کنه :
https://wordpress.org/plugins/custom-fields-rss/
البته این افزونه قدیمی هست. اگر کمی جستجو کنید میتونید مشابهش رو پیدا کنید.
چطور میشه یه فید جداگانه درست کرد؟ چرا مطلبش رو نمیذارید
سلام چطوری میشه یک تبلیغ بنری پایین فید گذاشت؟متشکرم
دقیقا توی ترفند آخر همین رو توضیح دادیم.
جناب بنر رو شفاف توضیح نداید ما زیاد تسلط نداریم ممنون میشم شفاف تر توضیح بدید برای بنر چیکار کنیم
توی آخرین باکس کد، خط 19 اگر دقت کنید به متغیر content کدی که میخواستیم رو نسبت دادیم. حالا این کد میتونه هر چیزی باشه. مثلا همین بنر که شما دنبالش هستید.
وقت شما بخیر
بنده از فید دسته های سایت وردپرسی ام برای نمایش مطالب در اپلیکیشن اندرویدم دارم استفاده می کنم
ولی متاسفانه چندتا مشکل زیر را دارم:
1. عکس ها و ویدئوهای داخل مطالب را با سایز واقعی نمایش می دهد و طبق سایز دستگاه تغییر سایز خودکار نمی دهد ولی خود سایت ریسپانسیو هست. چطور می توان این مشکل را حل کرد؟
2. گاهی اوقات تیترهایی که داخل مقالات نوشته شده با اینکه در مطلب داخل سایت درست و راست چین درج شده، در اپلیکیشن چپ چین نمایش می دهد. چطور می توان این مشکل را حل کرد؟
3. گاهی اوقات سایز تیترها و نوشته های داخل مطلب را با اینکه داخل سایت مشکلی ندارد، داخل اپلیکیشن سایزشان را کوچک می کند و نمایش می دهد. چطور می توان این مشکل را حل کرد؟
سلام
مواردی که اشاره کردید به اپلیکیشن شما مرتبط هست و نه به سیستم فید وردپرس و طبعا رفعشون هم باید در سطح طراحی و برنامه نویسی اپلیکیشن انجام بگیره.
سلام. چطوری میشه در فید یک دسته خاص فقط عنوان و عکس رو داشته باشیم.
یعنی متن خوده مطلب نباشه.
سلام
کدی رو لازم دارم که توی سایت وردپرس زمان آپدیت فید سایت رو تغییر بشه داد . البته قبلا از چنیین کدی استفاده میکردم ولی با آپدیت وردپرس به نسخه 5 این کد دیگه کار نمیکنه
لطفا راهنمایی کنید
سلام. چطوره میشه عنوان سایت در فید رو تغییر داد. فید از عنوانی که در وردپرس استفاده شده رو برمیداره می خوام فقط برای فید عنوان سایت رو تغییر بدم.
با سلام و عرض تشکر خدمت شما
مطلب بسیار مفید و عالی است .
فقط یک سئوال
چطور میتوانیم ، با هر بار بروزرسانی نوشته یا صفحه در وردپرس ، آخرین صفحه بروزرسانی به ابتدای فیلد اضافه شود .
به عبارت دیگر ، هر مطلب قبلی که به روزرسانی شد ، در اول صف فیلد نمایش داده شود ؟
باتشکر از شما
سلام
آیا راهی هست که محصولات یک سایت از طریق فید تو سایت دیگه نمایش داد؟
سلام
نگاهی به این دو افزونه بکنید شاید باهاشون بتونید چیزی که میخواید رو پیاده سازی کنید :
https://market.mrcode.ir/?p=114521
https://market.mrcode.ir/?p=58111
(لینک سایت رسمی هم جهت کسب اطلاعات بیشتر در لینک های بالا موجوده که میتونید امکانات رو بررسی کنید)