رفتن به مطلب

اضافه کردن خاصیت read و unread به پست


پست های پیشنهاد شده

سلام دوستان ...

بنده میخواستم خاصیت read (خوانده شده) و unread (خوانده نشده) رو به دسته ای خاص از مطالبم اختصاص بدم. یعنی اگر کاربری مطلبی رو خونده قبلا تو سایت، بالای اون بنویسه (خوانده شده) و اگرم هنوز نخونده که بنویسه (خوانده نشده).

یه جایی خوندم که باید براساس کوکی ها این کار رو انجام داد.

میشه راهنمایی کنید که چه کار باید بکنم ؟

پیشاپیش تشکر

لینک به ارسال

با کوکی ها هم می شه ولی کوکی خیلی پایدار نیست و کافیه کاربر کوکی هاش رو حذف کنه تا اطلاعاتش صفر بشه در وردپرس امکان ایجاد متای کاربری دارید که خیلی بهتره البته به شرطی که دیتابیستون به مشکل نخوره

به این ترتیب در ابتدای کدهای single.php اضافه می کنید


<?php
global $user_ID;
$date = date('Y-m-d H:i:s');
$read = 'read'.$post->ID;
if(user_is_logged_in() and !get_user_meta($user_ID, $read)) {
add_user_meta($user_ID, $read, $date);
}
?>

و در داخل حلقه صفحه index.php


<?php
global $user_ID;
$read = 'read'.$post->ID;
if(get_user_meta($user_ID, $read)) {
echo 'خوانده شده در '.get_user_meta($user_ID, $read, true);
}
else {
echo 'خوانده نشده';
}
?>

لینک به ارسال

ممنون اقا ایمان ...

من الان دارم روی لوکال چک میکنم، بعد کار نمیکنه و احتمال داره از لوکال باشه ؟

بعد منظورتون از دیتا بیس پی بود که گفتید به مشکل نخوره ؟

لینک به ارسال

مشکل از لوکال نباید باشه

شاید در صفحه کوئری باز داشته باشید کد اول را هم منتقل کنید به ابتدای حلقه

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

لینک به ارسال

اشتباه از من بود

کد تنست شده


<?php
global $user_ID;
$date = date('Y-m-d H:i:s');
$read = 'read'.$post->ID;
$umeta = get_user_meta($user_ID, $read, true);
if(is_user_logged_in() and empty($umeta)) {
add_user_meta($user_ID, $read, $date);
}
?>


<?php
global $user_ID;
$read = 'read'.$post->ID;
$meta = get_user_meta($user_ID, $read, true);
if(!empty($meta)) {
echo '<font color="green">Read '.$meta.'</font>';
}
else {
echo '<font color="red">Unread</font>';
}
?>

post-336-0-33157300-1406073249_thumb.jpgpost-336-0-55222200-1406073261_thumb.jpgpost-336-0-89610400-1406073274_thumb.jpg

لینک به ارسال

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

headbottom.php

single.php

لینک به ارسال

کدهاتون صحیحه من تستشون کردم و عکس هم گذاشتم مشکل رو خودتون باید پیدا کنید

لینک به ارسال

والا من که هر چی فکر میکنم متوجه نمیشم. ادرس اون سایتی رو که عکس گذاشتین رو میشه بدید ؟

کدی رو تو فانکشن نمباید اضافه کنیم ؟!

ویرایش شده توسط mahdi.a
لینک به ارسال

اشتباه از من بود

کد تنست شده


<?php
global $user_ID;
$date = date('Y-m-d H:i:s');
$read = 'read'.$post->ID;
$umeta = get_user_meta($user_ID, $read, true);
if(is_user_logged_in() and empty($umeta)) {
add_user_meta($user_ID, $read, $date);
}
?>


<?php
global $user_ID;
$read = 'read'.$post->ID;
$meta = get_user_meta($user_ID, $read, true);
if(!empty($meta)) {
echo '<font color="green">Read '.$meta.'</font>';
}
else {
echo '<font color="red">Unread</font>';
}
?>

post-336-0-33157300-1406073249_thumb.jpgpost-336-0-55222200-1406073261_thumb.jpgpost-336-0-89610400-1406073274_thumb.jpg

تصاویر مربوط به افزونه عزیزمونه؟ ^_^

لینک به ارسال

این سایت که لوکاله ولی می تونید توسایت

http://1fakhar.ir

با نام کاربری demo و رمز demo1234 وارد بشید و یک تیکت ارسال کنید تا زمانی که تیکت توسط مدیر خونده نشده در صفحه ی تیکت ها که نگاه کنید مشخصه که خونده نشده و بعد از خونده شدنش هم مشخص می شه اون هم با روشی شبیه همین نوشته شده

لینک به ارسال

این سایت که لوکاله ولی می تونید توسایت

http://1fakhar.ir

با نام کاربری demo و رمز demo1234 وارد بشید و یک تیکت ارسال کنید تا زمانی که تیکت توسط مدیر خونده نشده در صفحه ی تیکت ها که نگاه کنید مشخصه که خونده نشده و بعد از خونده شدنش هم مشخص می شه اون هم با روشی شبیه همین نوشته شده

درسته اقا ایمان ...

ولی اخه واسه من درست نمیشه! منم متوجه مشکل نمیشم والا. شما نمیدونید از چی میتونه باشه ؟

لینک به ارسال

من چی عرض کنم شما قالبتون رو نوشتید (پاسخ سئوال شما نیاز به علم پیشگویی داره نه برنامه نویسی ;) )

لینک به ارسال

:) پیشگویی رو خوب اومدید ... منظورم این بود که مثلا ربطی به کلیت وردپرس نداره این متای کاربر ؟

اگه نه میگم از روش کوکی نمیشه رفت ؟

لینک به ارسال

با کوکی هم میشه

http://www.w3schools.com/js/js_cookies.asp

و

http://www.w3schools.com/php/php_cookies.asp

ولی اگر منظورتون اینه که من توضیح بدم چند روزی باید منتظر باشید چون فعلا خیلی درگیرم

لینک به ارسال

با کوکی هم میشه

http://www.w3schools.../js_cookies.asp

و

http://www.w3schools...php_cookies.asp

ولی اگر منظورتون اینه که من توضیح بدم چند روزی باید منتظر باشید چون فعلا خیلی درگیرم

ممنون اقا ایمان ... حالا همین ادرسهای رو که دادید رو پیش میرم ان شا الله که درست میشه.

باز هم ممنون

لینک به ارسال

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

فقط اقا ایمان اگر بخوام اون تاریخ و ساعت خوانده شده رو برداریم مگه نباید اون تابع date رو برداریم و به شکل زیر بشه ؟


<?php
global $user_ID;
$read = 'read'.$post->ID;
$umeta = get_user_meta($user_ID, $read, true);
if(is_user_logged_in() and empty($umeta)) {
add_user_meta($user_ID, $read);
}
?>

ویرایش شده توسط mahdi.a
لینک به ارسال

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


<?php
global $user_ID;
$read = 'read'.$post->ID;
$umeta = get_user_meta($user_ID, $read, true);
if(is_user_logged_in() and empty($umeta)) {
add_user_meta($user_ID, $read, 'read');
}
?>

خلاصه یک مقداری باید به متا داده بشه

لینک به ارسال

تصاویر مربوط به افزونه عزیزمونه؟ ^_^

سئوالتون رو با من بودید؟ من متوجه نشدم منظورتون چیه؟

لینک به ارسال

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


<?php
global $user_ID;
$read = 'read'.$post->ID;
$umeta = get_user_meta($user_ID, $read, true);
if(is_user_logged_in() and empty($umeta)) {
add_user_meta($user_ID, $read, 'read');
}
?>

خلاصه یک مقداری باید به متا داده بشه

ممنون اقا ایمان ولی ظاهرا یه مشکلی هستش! اون موقع درست کار میکرد ولی الان باز با همون کد قبلی هم که اون موقع کار میکرد ،کار نمیکنه ! فایل فانکشن رو پاک کردم دوباره سیو کردم ولی باز از کار افتاده !!!!

لینک به ارسال

ممنون اقا ایمان ولی ظاهرا یه مشکلی هستش! اون موقع درست کار میکرد ولی الان باز با همون کد قبلی هم که اون موقع کار میکرد ،کار نمیکنه ! فایل فانکشن رو پاک کردم دوباره سیو کردم ولی باز از کار افتاده !!!!

شما خودت جواب خودت رو داری می دی وقتی با کدی که قبلا کار می کرد دوباره کار نمی کنه یعنی کد سالمه و ایرادی نداره باید ببینید ایراد از کدوم قسمته

بله از شما پرسیدم.

اگر منظورتون افزونه کاربران است یک نسخه از دموش روی این سایت نصبه

لینک به ارسال

دیگه خدایش مشکل رو کشف کردم! مشکل از پیوند یکتا بود. الان کد درست کار میکنه اقا ایمان ، فقط چون تاریخ رو برداشتیم و شما 'read' رو اضافه کردید یه مشکلی پیش اورد که اونم این بود این کلمه رو یعنی read رو کنار READ که تو اون کد دومی هستش و به رنگ سبز هم بود میادش.من اومدم این ترفند رو روش زدم، ببینید گند زدم یا نه ؟ :)


<?php
global $user_ID;
$read = 'خواندیـد'.$post->ID;
$meta = get_user_meta($user_ID, $read, true);
if(!empty($meta)) {
echo '<span class="read"> '.$meta.'</span>';
}
else {
echo '<span class="unread">نخواندید</span>';
}
?>

و


<?php
global $user_ID;
$read = 'خواندیـد'.$post->ID;
$umeta = get_user_meta($user_ID, $read, true);
if(is_user_logged_in() and empty($umeta)) {
add_user_meta($user_ID, $read, 'خواندیـد');
}
?>

لینک به ارسال

اینطوری استفاده کنید


<?php
global $user_ID;
$read = 'read'.$post->ID;
$meta = get_user_meta($user_ID, $read, true);
if(!empty($meta)) {
echo '<span class="read"> خوانده اید </span>';
}
else {
echo '<span class="unread">نخوانده اید</span>';
}
?>
<?php
global $user_ID;
$read = 'read'.$post->ID;
$umeta = get_user_meta($user_ID, $read, true);
if(is_user_logged_in() and empty($umeta)) {
add_user_meta($user_ID, $read, '1');
}
?>

در کد نویسی باید تلاش کرد حتی المقدور داد و ستد اطلاعات با دیتابیس را کاهش داد مثلا بجای کلمه فارسی خواندید باید عبارت (%25D8%25AE%25D9%2588%25D8%25A7%25D9%2586%25D8%25AF%25DB%258C%25D8%25AF) داد و ستد شود با گذاشتن عدد 1 هم همانکار انجام می شود

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...