کد وردپرس: ایجاد تأخیر در نمایش مطالب در RSS سایت

مسیح دیندار
مدیریت
عضو شده: 2021-04-12 14:23:35
2021-05-07 04:36:01

زمانی که در سایت وردپرسی خودتون یک مطلب منتشر می کنید، بصورت آنی اون مطلب در RSS سایتتون به نمایش درمیاد. امروزه سایت هایی هستند که با استفاده از RSS مطالب شما رو به طور کامل در سایت خودشون کپی می کنند و به نوعی سرقت محتوا انجام میدن. حالا این وسط اگه بدشانس باشید و سایت مقابل توسط اقدامات مختلف، توی نتایج جستجو از سایت شما بالاتر باشه، می تونه با محتوای اختصاصی که شما نوشتین، به رشد خودش کمک کنه و اگه سرعت ایندکس مطالب سایت مقابل از شما بیشتر هم باشه، ممکنه گوگل شما رو به عنوان کپی کار جریمه کنه!!

پیشنهاد من به شخصه بستن قابلیت RSS هست اما بعضی وقت ها شما یک برنامه ای برای موبایل دارید که مطالب رو توسط RSS سایتتون نمایش میده و امکان بستن کامل خوراک نیست. ولی می تونیم با ایجاد یک تأخیر در RSS، به گوگل اجازه بدیم اول مطلب رو در سایت ما ایندکس کنه و بعد در اختیار بقیه قرار بدیم. 

برای داشتن همچین قابلیتی، کد زیر رو داخل فایل functions.php قالبتون قرار بدید:

function talkina_delay_feed($where) {
 
    global $wpdb;
 
    if ( is_feed() ) {
        // بخش دریافت تاریخ انتشار مطلب
        $now = gmdate('Y-m-d H:i:s');
 
        // میزان تأخیر انتشار مطالب در خوراک
        $wait = '10'; // integer
        // واحد میزان تأخیر. در اینجا ما از دقیقه استفاده کردیم. واحدهای دیگه مقابل کد نوشته شده
        $device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

        $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
    }
    return $where;
}
 
add_filter('posts_where', 'talkina_delay_feed');

توضیحات:

در کد بالا اول از همه واحد اندازه گیری تأخیر رو تعیین کنید. من از دقیقه استفاده کردم اما اگه فکر می کنید مطالبتون ممکنه دیرتر ایندکس بشن، بجای MINUTE از HOUR یا حتی DAY استفاده کنید.

بعد بجای عدد 10 یک عدد مناسب با واحد خودتون تعیین کنید. مثلا واحد رو HOUR و عدد رو 5 بگذارید تا مطالب جدید بعد از 5 ساعت در خوراک نمایش داده بشن.