نمایش لینک ها فقط برای اعضا

نمایش لینک ها فقط برای اعضا

به دنبال انتشار مطلب حذف لینک های مطلب وردپرس، کاربران عزیز درخواست کدی را داشتند که بتوان تمامی لینک های داخل مطالب را بدون شورت کد (shortcode) فقط به کاربران عضو شده نمایش دهند. ما نیز انجام وظیفه کردیم و امروز با این کد در خدمت شما هستیم. پس با Snippets همراه باشید تا ابتدا کارکرد این کد را بررسی کنیم و بعد از آن با یه کد کوچولو در خدمت شما هستیم. کد هنگامی که کاربر در حال مشاهده یک مطلب هست بررسی می کند کاربر مورد نظر وارد سایت شده یا مهمان است. اگر کاربر مورد نظر وارد سایت شده باشد مطلب بدون تغییر به او نمایش داده می شود ولی اگر مهمان بود به جای لینک ها خطای “[مشاهده لینک ها فقط برای اعضا امکان پذیر است]” را نمایش می دهد . بصورت پیش فرض متن خطا به صفحه ورود (عضویت) سایت لینک شده است . با این حال اگر چیز دیگری می پسندید می توانید آن را ویرایش کنید. اینم کد :

add_filter( 'the_content', 'content_link_for_user_snippets', 1 );

function content_link_for_user_snippets( $content = '' ) {
    // Snippets.ir
    if( ! is_user_logged_in() ) {
        preg_match_all( "#<a(.*?)>(.*?)</a>#i", $content, $matches );
        $num = count( $matches[0] );
        for( $i = 0; $i < $num; $i++ ) {
            $content = str_replace( $matches[0][ $i ], '<a href="' . wp_login_url( get_permalink() ) . '"><span style="color:#F00;">[مشاهده لینک ها فقط برای اعضا امکان پذیر است]<span></a>', $content );
        }
    }

    return $content;
}

شما می توانید این کد را در فایل functions.php قالبتان (یا هر جایی که کد اجرا شود، مانند داخل افزونه ها) اضافه کنید.

5 thoughts on “نمایش لینک ها فقط برای اعضا

  1. واقعا بعضی از این کد های که شما گفتین تو هیچ انجمنی پیدا نمیشه
    من سایتم چند مدت هست فیلتره یه کد میخواستم که بتونه تمام لینک های دانلود را از کلیه پست ها بر داره
    دمت گرم

  2. سلام من با این کد یک مشکل دارم اول اینکه صفحه ورود رو نمایش میده نه صفحه ثبت نام رو!
    دوم اینکه بعد از ثبت نام کابر به صفحه ی اصلی ریدایرکت میشه!! من میخوام به همون صفحه ای انتقال داده بشه که لینک در اون قرار داشته اخرین صفحه ای که مطالعه می کرده. میتونید این کد رو در اینجا قرار بدین یا برام ایمیل کنید؟

    1. سلام
      ۱. از تابع wp_registration_url بجای wp_login_url استفاده کنید.
      ۲. فکر میکنم پارامتر انتقال فقط برای ورود تعریف شده باشد. که می تونید آدرس صفحه فعلی رو به پارامتر redirect_to پاس بدید.

    2. با سلام و تشکر از مطلب آموزشی شما
      ۱- ایرادی که کد داخل پست داره این که، وقتی کاربر وارد سایت می شه، به جای ارجاع وی به مطلب قبل به پیشخوان ریدایرکت میشه. مشکل را چکونه باید حل کرد؟

      ۲- میشه کد کامل سئوالاتی که آقای مجید پرسید را قرار بدید؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.