no-img
اِمیلا

نمایش ادامه مطلب پس از عضویت در سایت

بروزرسانی؛
22 مارس 2020
کد نویسی

شاید بخواهید زمانی که کاربر به عنوان میهمان وارد سایت می شود قارد به مشاهده تمامی متن صفحه باشد و در غیر این صورت تنها 40 تا 50 کارکتر مطلب برای او نمایش داده شود و برای دیدن کل مطلب پیغامی مبنی بر ورود به سایت نمایش داده شود.

روش اول:

با استفاده از شرط if_user_login و تابع the_content کل مطلب مخفی خواهد شد و تنها کاربران عضو سایت قابل به مشاهده متن خواهند بود.

<?php if ( is_user_logged_in() ) { ?>
<?php the_content('');?>
<?php } else { ?>
<?php the_excerpt(); ?>
<p>می توانید برای مشاهده ی ادامه مطلب ثبت نام کنید</p>
<?php } ?>

كد بالا را جايگزين كد زیر در قالب خود کنید (در فایل single.php یا home.php یا index.php یا هر جایی که مد نظرتان است.)

<?php the_content(); ?>

در روش بالا کل مطلب از دید کاربر مهمان پنهان می شود اما اگر می خواهید تعدادی از کارکترهای مطلب دیده شوند (مثلا در حد یک یا دو خط) از تابع زیر استفاده کنید:

<?php
if(is_user_logged_in()) {
the_content();
}
else {
$content = get_the_content();
$content = wp_trim_words($content, $num_words = 10, $more = null);
echo $content;
echo 'Message';
}
?>

كد بالا را جايگزين كد زیر کنید (در فایل single.php یا home.php یا index.php یا هر جایی که مد نظرتان است.)

<?php the_content(); ?>

بجای 10 تعداد کلمه (ی دلخواه بدون عضویت) و به جای Message پیام دلخواه (جهت عضویت و مشاهده ادامه متن) را قرار دهید.

روش دوم:

ممکن است بخواهید متن یا لینک را برای کاربران عضو در داخل پست های سایت نمایش دهید.

با استفاده از شورت کد این کار براحتی قابل انجام است.

functions.php قالب رو باز کنید و کد زیر رو اضافه کنید:

function fc_user_only( $atts, $content = null ){
if( null != $content && current_user_can('read') ){
return $content;
} else {
$mylink = get_permalink();
return '<br/>[ <font color=red>برای دریافت فایل <a href=/wp-login.php?redirect_to='.$mylink.'>وارد شوید</a> و یا <a href=/wp-login.php?action=register>ثبت نام</a> کنید! </font> ]';
}
}
add_shortcode('emila', 'fc_user_only');

سپس داخل پست ها یا برگه ها از شورت کد زیر استفاده نمائید:

[emila]
محل قرار گیری متن، لینک، تصویر و... برای نمایش به کاربران عضو شده
[/emila]

روش سوم:

اگر بخواید داخل قالب سایت هم این کار رو انجام بدید از این کد استفاده کنید :

<?php if (!is_user_logged_in() ) { ?>
متن یا محتوا قبل از ورود کاربر به سایت
<?php } else { ?>
محتوا بعد از ورود کاربر به سایت
<?php } ?>

روش چهارم:

کد نمایش مطلب برای کاربران عضو وردپرس

این روش تقریبا مانند روش دوم است، برای این منظور کد زیر را در در فایل functions.php قالب وردپرس کپی کنید. (قبل از تغییری از فایل functions.php پشتیبان تهیه کنید تا در صورت بروز مشکل بتوانید نسخه پشتیبان را جایگزین کنید.)

<?php
add_shortcode( 'emila_ir', 'linkfunction' );
function linkfunction( $atts, $content = null ){
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
return $content;
return 'برای مشاهده متن وارد سایت شوید'; 
}
?>

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

[emila_ir]
متن مورد نظر - لینک دانلود - و ...
[/emila_ir]

می توانید متن هشدار و پیام دلخواه تان را تغییر دهید و یا لینک صفحه عضویت را در آن قرار دهید.

لینک کوتاه : https://emila.ir/?p=17027
سلام علیکم!
فرم گزارش را به دقت تکمیل نمایید...
از همکاری شما پیشاپیش سپاسگذاریم