ما همیشه به دنبال راههای بهتر و جدیدتر برای رفع مشکلهامون هستیم. مطلاب امروز، نوشتهای درباره "منحصر بهفرد کردن نظرات مدیر در وردپرس" به روشی جدیدتر هست. یک آموزش جدید و در واقع تکمیل یافته آموزش "برجسته کردن دیدگاه های مدیر سایت". این روش در واقع عیب آموزش قبلی رو از بین برده. به این دلیل که در روش قبلی یه اشکال بزرگ وجود داشته و اون این بود که پس از پایان مراحل کار، هنگامیکه سایت یا بلاگ وردپرسیتون چند مدیر داشته باشه، فقط نظرات مدیرکل (منظور از مدیر کل اینجا مؤسس بلاگ هست) هایلات خواهد شد و نظرات سایر مدیران و یا حتی در مواقع لزوم ویرایشگران به حالت عادی خواهد ماند. در واقع آپدیت این روش بر پایع تابع پیاچپی "if … else" بنا شده که در روش قبلی نیز بهکار رفته بود. البته ناگفته نمونه که برای انجام اینکار پلاگینهای متعددی هم وجود داره که به دلایل زیادی استفاده از این پلاگینها توصیه نمیشه چون اکثراً هوشمند نیستن و همچنین به خاطر صرفهجویی در منابع هاست، بهتره از روشهای دستی استفاده کنین. در زیر ما دو روش برای انجام اینکار خدمت شما عرض خواهیم کرد تا بتونین برای بلاگتون از این روشها استفاده کنین.
روش دستی اضافه کردن لیست
در این زمان، ما میخوایم کار رو برای خودمون آسونتر کنیم تا بتونیم لیست مدیران بلاگ رو بدون هیچ کد اضافهای تهیه کنیم. به جای استفاده از یک کد یا چک کردن آدرس ایمیل، ما به وردپرس یه لیست ایمیل، که متعلق به مدیران وردپرس هست، تحویل میدیم. به این ترتیب اگه ایمیل شخص نظردهنده به این لیست تعلق داشته باشه، نظر اون شخص با یه استایل جداگانه و منحصر به فرد به نمایش گذاشته میشه. که با بقیه نظرات فرق داره.
ساخت لیست ایمیل
برای مرحله بعد، ما به تعیین کردن لیست ایمیلهایی که مخصوص هستند نیاز داریم. من از چند ایمیل برای نمونه در اینجا استفاده کردم تا بتونین بهخوبی مسئله رو درک کنین.
<?php //List of emails to highlight $admin_emails = array( "saeid@yekweb.com", "vahid@yekweb.com ", "ali@yahoo.com", "mohamad@gmail.com" ); ?>
شما گزینههایی خواهید داشت
شما میتونید هر تعداد ایمیلی که نیاز دارین به لیست اضافه کنین. لیست میتونه همهی ایمیلها رو چک کنه.
در این روش شما باستی بصورت دستی همهی ایمیلهایی که هدف شماست به لیست اضافه کنین. این روش قاعدتاً آسونتر و سریعتر از روش شناسایی اکانت ادمینها بصورت اتوماتیک، روشی که در ادامه عرض خواهد شد، هست.
روش گرفتن خودکار ایمیلها از دیتابیس
اگه مایل به استفاده از این روش هستید، میتونیم این کد رو بنویسیم. بنابراین در صورت استفاده از این کد ما هرگز مجبور به وارد کردن دستی ایمیلها در comments.php نخواهیم بود. این روش هم در اکثر سایتها استفاده میشه، ولی خب روش قبلی روش سریعتر و سرعت عمل اون روش بیشتر هست. اما اگه این روش رو ضروری دونستین میتونین از این روش استفاده کنین.
جستجوی ایمیلها در دیتابیس
ما برای مرحله اول نیاز داریم که تمامی ایمیلهای مدیران رو از دیتابیس دریافت کنیم و اونها رو در صف جایگزینی کنیم. اینکار برای گرفتن لیست خاصی از ایمیلهای کاربران وردپرس از دیتابیس کار آسونی هست.
<?php //Automatically pull admin accounts $user_level = 8; //Default user level (1-10) $admin_emails = array(); //Hold Admin Emails //Search for the ID numbers of all accounts at specified user level and up $admin_accounts = $wpdb->get_results("SELECT * FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= $user_level "); //Get the email address for each administrator via ID number foreach ($admin_accounts as $admin_account){ //Get database row for current user id $admin_info = $wpdb->get_row("SELECT * FROM $wpdb->users WHERE ID = $admin_account->user_id"); //Add current user's email to array $admin_emails[$admin_account->user_id] = $admin_info->user_email; } ?>
اگه این اولین تجربه کار شما با دیتابیس وردپرس هست ممکنه شما وقتی با کد بالا مواجه شدین کمی متعجب بشین. این زیر یک لیست تفکیک برای کمک به شما برای برطرف کردن این مسائل آورده شده:
- متغیر $user_level شامل یک عدد بین ۱-۱۰ است. طبق قانونهای کاربران وردپرس (برای مثال مدیران، ویرایشگران، و …) همگی بر اساس یک مقدار نمایش داده میشوند. برای انتخاب کردن فقط شناسه مدیران، این عدد باید روی ۸ قرار بگیره.
- صف $admin_emails ایمیلهایی که از کوئری برگشت داده میشن رو نگه میداره.
- اولین کوئری دیتابیس، جدمل usermeta رو برای تمامی کاربرها به همراه کاربر با درجه بالاتر یا مساوی که در $user_level به نمایش گذاشته شده بود رو جستجو میکنه. نتیسجه این کارها و مراحل، در صف $admin_level به نمایش خواهد اومد.
- هر گزینه در صف $admin_accounts مراحلی رو طی میکنه و جدول کاربران شماره آیدی یوزر از مرحله سوم رو جستجو میکنه. آدرس ایمیل دوباره بدست آورده میشه و در صف $admin_emails به نمایش گذاشته میشه که به عنوان شناسایی کننده در صف بهکار میره.
در آخر این کد، ما باید لیست آدرس ایمیلهایی که سطح اونها رو $admin_emails مشخص کرده بود، مرتب کنیم.
انتخاب کردن نظرات مدیر
همونطور که در پایین مرحله قبل گفته شد ما بایستی لیست ایمیلهای مدیران رو مرتب کنیم.
فیلتر کردن نظرات
اکنون ما یه لیست در اختیار داریم، ما بایستی هر ایمیلی که مختص نظرات مدیر هست رو چک کنیم. اگه نظری طبق این شرط پیدا شد، اون استایل خاص خودش یعنی "admincomment" رو دریافت کنه و استایل رو به نمایش بگذاره.
در فایل comments.php پوسته بلاگ شما، چرخه نظر foreach رو قرار میدیم.
<!--Check if comment is by the author--> <?php //Default to $admin_comment = false; foreach ($admin_emails as $admin_email){ //If comment was made from an admin email if($comment->comment_author_email == $admin_email){ $admin_comment = true; break; } }; ?>
کد بالا، آدرس ایمیل نویسنده نظر رو میگیره و اون رو در لیست ایمیل مدیر چک میکنه. اگه نتیجه مثبت بود، $admin_comment درست تنظیم میشه.
تعیین کردن کلاس خاص برای نظرات
نظرات مخصوص، بصورت عادی توسط کلاس "admincomment" تعیین شدهاند. من در اینجا کد مورد نظر رو نوشتم. شما حتماً به کد PHP که در کلاس ul تعریف شده، توجه خاصی کنید.
<ul class="comments <?php if($admin_comment) echo 'admincomment'; ?>"> <!--سایر کدهای کامنت اینجا--> </ul>
بهخاط داشته باشید ساختار کامنت حتماً میبایستی بعد از چرخه $isByAdmin
در مرحله قبل قرار داده بشه تا به درستی کار کنه.
استایل دادن به نظرات
وقتی که تابع PHP دریافت میکنه که نظر مخصوص مدیر هست در خروجی کلاس مورد نظر ما رو به نمایش میذاره، یعنی در واقع همون هدف اصلیمون. پس باید ما در فایل استایل پوسته این class رو تعریف کنیم تا تابع، کلاس استایل رو دریافت کنه.
من در اینجا یه نمونه ساده css رو برای راهنمایی شما قرار میدم. امّا امیدوارم شما یه ایدهی خلاقانهتری برای کار نهایی انجام بدین.
.admincomment{background:#191919; color:#FFF; border:1px solid #333;}
دانلود ریز کدها
برای کمک کردن به شما، ما با هم یک فایل کامنت همراه با ریزکدهای ضروری رو برای دانلود قرار دادم. این فایل همهی شبههها و سوالات شما مربوط به جایگذاری و ترتیب کدها رو برطرف میکنه. برای دانلود فایل اینجا کلیک کنید.
بهزودی قابل دسترس در یک افزونه
هماکنون شما تونستین اینکار رو انجام بدین، خوش به حالتون. ما قصد داریم این روش رو برای استفاده آسون کلاس برای پوستههای وردپرس تهیه کنیم.
نسخه پلاگین شامل متدهای بالا برای نمایش میشه. ما برنامهای برای دانلود این پلاگین تو روزهای آینده در ذهن داریم.
ایدهها و درخواستهای دیگهای دارین؟ اگه جواب بله هست میتونین پایین در بخش نظرات مطرح کنین و ما مطمئناً اونها رو قبل اینکه انتشار نهایی انجام بشه در افزونه ملاحظه میکنیم.
موفق و شاد باشید
منبع: پایگاه اینترنتی یک وب
؟
اوستا جان چطوری من برای سایتم اینجور دیدگاهی داشته باشم؟ عکس گرفتم از درخواستم
http://s5.picofile.com/file/8285355184/7.jpg
منتظر پاسختم
میلی به نصب افزونه ندارم و فکر نکنم اینایی که تو عکس باشن با افزونه نصب شده باشن
سلام خوب بود ولی مشکلش اینه که اگه کسی ایمیل مدیر رو برای خودش وارد کنه اونم به عنوان نظر مدیر شناسایی میشه.
سلام
ممنون از مطلب زیباتون.
میشه برای جوملا هم آموزش بدید؟! 😡
سلام اقا منکه نفهمیدم p-: این افزونه راه بیاندازید =))
درود
ترتیب نظرات کاربران بجای اینکه از بالا به پایین باشه وارونه شده، یعنی نظر جدید بجای اینکه بعد از نظر قبلی بیاد قرار بگیره میره بالای نظر قبلی. نمی خوام اینطوری باشه و همون حالت پیش فرض رو می خوام مثل همین نظرات که تو این صفحه حاضر است و بر اساس تاریخ جدید آخرین نظر و دیدگاه میاد در آخر صفحه نه اولین نظر. من با کدنویسی آشنا نیستم اگه از طریق کد هست لطفا دقیق و مرحله به مرحله بگید که خراب نشه. اگه پلاگین داره بفرمائید اسمش چی هست که برم بگیرم.
سپاس 😀
@مسعود : درود ;
به انجمنهای پشتیبان ما بیاید و مطرح کنید راهنماییتون خواهیم کرد .. http://forum.wp-parsi.com/ موفق باشید ../.
ممنون
عالی بود 🙂
بسیار عالی و کاربردی بود
کجاست؟
موقتا نیست یا اینکه … ؟ /:)
ممنون آقا وحید. 😡
@akbar: وحید نیستش ولی من جاش میگم خواهش میکنم اکبر جان..
[…] متمایز کردن نظرات مدیران در وردپرس به روشی جدید […]
روش جالبی بود
مرســـــــــــــــــــــی
🙂
این روش رو کاملاً نوشتم و توضیح دادم
خواستی بیا بخون
http://www.rezaonline.net/blog/
آخ ببخشید کدهارو مستقیم زدم وردپرس شناسایی کرد
منظورم اینه
ol class=”commentlist”
خودت این کدرو درست کن
لیست ol
بینشم تابع wp_list_comments
داداش وحید
راه حل که خیلی ساده است
اگه توی فایل comments.php به جای زدن کدهای نظرات ، توی حلقه نظرات فقط از
استفاده کنی
بطور خودکار کلاس .comment میشه نظرات عادی ، .alt میشه نظرات عادی یکی در میون
.comment-author-admin میشه نظرات مدیر .pingback هم میشه پینگ
اینو توی قالب جدیدم رعایت کردم
بیا ببین
نظرات بد نشده
حله داداش؟ 🙂
سلام
آموزش مفیدیه. تشکر
ممنون میرم تو کارش
میگم داش وحید راستی شما پی اچ پی خوب بلدی؟
با فریم ورک ها کار میکنی یا اصلاً طرفشون نمیری 🙂
در مورد رنگ وبلاگم
چشم یه چیز کرم رنگ میسازم
جی کوئری هم یا استفاده نمیکنم یا اگه استفاده کنم خیلی استفاده میکنم :-ss
راستی یه گلایه اون ۲۵ صدم رو هم میدادی نمیشد =(( =(( >:)
وحید جان سلام
شما خیلی لطف داری
یه سوال کوچیک
تولتایپ ها رو با جی کوئری ساختی؟
راسیتش دوست ندارم زرتی بپرم توی سورسهای قالبت چون کار زشتیه
فقط بگو با جی کوئری ساختی و حجم فایلهای js رو بگو
نمیدونم چه مرگم شده میخوام یه قالب فوق سبک بسازم از جی کوئری هم استفاده نکنم تا اضافه بار نداشته باشه
پیشنهادت چیه؟
راستی چه رنگی به وبلاگ من میاد
میخوام یه قالب سبز درست کنم نظرت چیه؟ :-
اگه میشه لطف کنین بگین ما مبتدی ها هر کردوم از این کدها رو تو کدوم فایل قرار بدیم
سلام وحید جان
آموزش خیلی عالیی بود
حتما تو قالب جدید سایتم ازش استفاده میکنم 😀
موفق باشی
وحید جان خسته نباشی داداش
دمت گرم خدا قوت
ولی تجربه بنده میگه ارسال مطالبی اینچنین ریز و البته کار درست خواننده هایی رو که اطلاعات کمی دارن یه کمی سر در گم میکنه
به نظر من البته اگر مثلاً ساده تر با کدهای کامنت بازی میکردی بهتر بود مثلاً میگفتی این کد کلاس یا آی در جدید به کامنت این ایمیل خاص میده که میتونین ایمیل ادمین رو وارد کنید
البته کارت درسته شک نکن
خسته نباشی داداش