افزودن پست سفارشی به صفحه آرشیو نویسندگان وردپرس
در آموزش های قبلی سایت روکش با نحوه ایجاد صفحه پروفایل سفارشی برای کاربران وردپرس آشنا شدیم. تا اینجای کار یاد گرفتیم که چگونه می توانیم یک صفحه اختصاصی برای کاربران وردپرس ایجاد کنیم و در آن اطلاعاتی در مورد کاربران به همراه آخرین پست های ارسالی توسط آنها را به نمایش بگذاریم. اما در این مطلب می خواهیم به سوال یکی از کاربران خوب سایت روکش پاسخ دهیم.
جناب وحید محمدی عزیز در مطلب آموزش ایجاد صفحه پروفایل سفارشی برای کاربران وردپرس می خواستند تا با نحوه نمایش پست هایی که توسط کاربران در افزونه پرسش و پاسخ DW Question & Answer ارسال می کنند, در صفحه پروفایل شخصی کاربران آشنا شوند. از آنجایی که این افزونه از پست های سفارشی وردپرس برای ایجاد سوالات استفاده می کند, ما باید یک کوئری از پست سفارشی مورد نظر در فایل author.php ایجاد کنیم.
روش اول : افزودن مستقیم کوئری به فایل author.php
در روش اول ما می توانیم به صورت مستقیم کوئری مورد نظر را در فایل author.php قرار دهیم. برای این منظور کافی است تا کد زیر را در محل مناسبی از فایل author.php قرار دهید.
<?php $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author)); query_posts( array( 'post_type' => array('rokesh'), 'author' => $author ) ); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <li> <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; else: ?> <p>این کاربر هنوز هیچ پستی ارسال نکرده است</p> <?php endif; ?><?php wp_reset_query(); ?>
توجه داشته باشید که به جای rokesh باید نام پست سفارشی مورد نظر خود را قرار دهید. مثلا برای افزونه DW Question & Answer باید از عبارت dwqa-question استفاده کنید.
روش دوم : افزودن پست سفارشی از طریق فایل functions.php
در این روش ما با افزودن یک تابع به فایل functions.php, کاری می کنیم تا مطالب منتشر شده در, پست سفارشی نیز در بین پست های دیگر کاربر قرار گیرند. برای انجام این کار کافی است تا کد زیر را به فایل فانکشن قالب فعلی خود اضافه کنید و به جای rokesh نام پست سفارشی خود را وارد نمایید.
function custom_post_author_archive($query) { if ($query->is_author) $query->set( 'post_type', array('rokesh', 'post') ); remove_action( 'pre_get_posts', 'custom_post_author_archive' ); } add_action('pre_get_posts', 'custom_post_author_archive');
امیدوارم این مطلب نیز مانند سایر مطالب سایت روکش مورد قبول و رضایت شما قرار گرفته باشد. منتظر نظرات زیبای شما هستیم.
سلام آقا خیلی ممنون خیلی لطف کردی
دو تا سوال دیگه!! 🙂
۱) من توی css تم وردپرسی م خیلی تغییر ایجاد کردم و کلا یه قالب دیگه شده. اما مطمئن نیستم شاید توی فایل های دیگه هم تغییری ایجاد کرده باشم مثلا functions.php و author.php رو الآن فقط یادمه. حالا آپدیت برای تم اومده من چجوری از child theme ها برای آپدیت تم استفاده کنم؟
۲) از اونجایی که نمیتونیم از feedburner برای rss استفاده کنیم، چه روش ها و کدهایی هست که میتونم بزنیم تا rss سایت مون رو شخصی سازی کنیم؟
من هنوز کد رو تست نکرده بودم اما الآن که تست کردم دیدم کار نمیکنه 😐 بازم چیزی نیومد 😐
منظورم اینه که نوشته این کاربر هنوز هیچ پستی ارسال نکرده است
خوب اگر از روش اول استفاده کرده باشید و این متن را نوشته باشه, یعنی اینکه کاربر مورد نظر هنوز هیچ پستی در این پست سفارشی ارسال نکرده است. چک کنید ببیند که آیا پست تایپ این افزونه دقیقا question هست یا نه؟ بعد آیا واقعا اون کاربر سوالی پرسیده و در آخر هم ببیند که آیا به جای rokesh دقیقا question یا پست تایپ دیگه ای که مربوط به افزونه هست را وارد کردید؟
سلام بله همه رو انجام دادم اما نمیدونم پست تایپ رو از کجا باید بیارم؟ منظورتون همون زمینه های دلخواه هست؟ وقتی به حالت ویرایش یه سوال میرم اصلا قسمت زمینه های دلخواه نداره 😐
نه پست تایپ با زمینه دلخواه فرق می کنه (به زودی از یک بخش جدید در روکش رونمایی میشه که می تونه شما را با مفاهیم اولیه وردپرس آشنا کند). اما مورد مشکلی که داشتید, راستش من افزونه را نصب کردم و متوجه شدم که این افزونه از پست تایپ dwqa-question استفاده می کنه. پس شما باید در کد بالا به جای rokesh عبارت dwqa-question را قرار بدید. خودم تست کردم درست جواب می داد.
بله حالا کار کرد! خیلی ممنون. خیر ببینید.
برای لیست کردن پاسخ ها چی؟ 🙂 🙂
پست تایپ پاسخ ها هم, dwqa-answer هست. بعنی به جای rokesh باید از این عبارت استفاده کنید.
خــــــــــــیلی ممنون کار کرد!!
آقا سعید راستی هنوز من وقتی کپی میکنم اعداد هم کپی میشن ها!! شاید مشکل از کشی چیزی باشه
الان چک کردم, مشکل اعداد داخل فایرفوکس فقط حل شده. سعی می کنم درستش کنم
کدوم یکی از کدها را تست کردید؟
۱- خوب بهتر هست تا نسخه جدید قالب را بگیرید و با قالبی که ویرایش کردید مقایسه کنید و تغییراتی که در قالب فعلی ایجاد کردید را هم به قالب جدید منتقل کنید.
۲- شما می تونید از feedburner با یک ساب دامین شخصی از سایت خودتون استفاده کنید, برای شخصی سازی rss هم کدها و افزونه های زیادی هستند که با کمی جستجو کردن می تونید پیدا کنید.
ببخشید مگه feedburner هیتلر نیست؟ چجوری باید اینکاری که میگید رو انجام بدم؟
از آموزش انتقال آدرس فیلتر شده feedburner به دامین شخصی استفاده کنید.
سلام مهندس سعید عزیز مطالب را خوندم خیلی خوب بود خیلی ممنونم.
منشخصا از شما خواهش و درخواست خیلی مهمی دارم تا بتوانم سایتم را شروع به طراحی کنم:
من با دستور SELECT در قالب وردپرسم در بالای سایتم ۱۰ لیست کشابی درست کردم
در زیر آن در یک جدول، ۱۰کلمه در خانهای جدول نوشتم که لینک هستند به دسته هایی که در پنل وردپرسم ساختم.
حالا میخواهم با کلیک بروی هرلینک از ده لینک ، زیر دسته های ان دسته در اولین گزینه منوی کرکره ای به نمایش در بیاید وبروزشده ترین مطالب آن زیر دسته ها در لیست منوی کرکره ای به نمایش در بیاید .
مثال من بروی لینک مستند در جدولم کلیک بکنم در منوی کرکره ای که ساختم جدیدترین زیر دسته ها در هر یک از منوهای کرکره ایم نشان داده شود که با کلیک روی انها زیر منویی شامل ۱۰ تا از جدیدترین پست ها و مطالب آن زیر دسته را نمایش دهد.
و سوال دوم کاربرم در هر صفحه از هر دسته سایتم می رود تبلیغاتم نسبت به آن صفحه ونوع دسته تغییر کند.
من از افزنه دانلود به ازای عضویت استفاده می کنم . میخواهم به هر دسته که می رود محصول دانلودی نسبت به آن دسته نمایش داده شود.
وسوال سوم من میخواهم ۲ سرچ داشته باشم یکی در عنوان های اصلی مطالب و دسته ها و زیر دسته ها و دیگری سرچ در کل سایتم.
برای من خیلی سخت بود اما برای شما با این همه دانش کد نویسی بسیار ساده است. ممنون میشم کمکم کنید.
ممنونم منتظر جواب و راهنمایی و کدهای شما هستم.
۱- منظورتون را خوب متوجه نشدم ولی اگر منظورتون ساخت منو کشویی باشه پیشنهاد می کنم آموزش گام به گام ساخت منو کشویی برای وردپرس را دنبال کنید.
۲- برای ساخت قالب های متفاوت برای آرشیو دسته بندی های وردپرس می تونید یک کپی از فایل category.php یا archive.php بگیرید و با نام id-category.php ذخیره کنید. به جای id هم باید id دسته مورد نظرتون را قرار بدید. بعد داخل این فایل جدیدی هر تغییری ایجاد کنید فقط برای دسته مورد نظرتون تغییرات اعمال می شوند.
۳- سعی می کنم به زودی نحوه انجام این کار را در روکش قرار بدم.
سلام آقا سعید با تشکر فراوان از شما مجددا دو تا راهنمایی میخواستم ازتون:
۱) من افزونه ی myCred رو نصب کردم که برای امتیاز دادن استفاده میشه و تونستم با افزونه ی DW question and Answer هم هماهنگش کنم. حالا یه کاری رو میخوام انجام بدم و اون اینه که امتیاز هر کاربر رو جلوی اسمش بنویسم! چجوری میشه اینکار رو کرد؟ سایت افزونه ی myCred کلی shortcode و tamplate tag و… داره ولی خب من خیلی چیزی سرم نمیشه 😐 یعنی از shortcode ها نمیشه توی فایل های php استفاده کرد برای همین هم نمیفهمم باید چکار کنم. اگر میشه بگید که چه کدی رو توی چه فایلی از افزونه ی dw question and answer باید بنویسم؟
۲) میخوام پاسخ هایی که توسط مثلا مدیر و editor داده میشه یه حالت متفاوتی داشته باشن یعنی یه css متفاوتی براشون اعمال بشه اما متاسفانه هیچ class ی در حال حاضر برای مدیر و editor روی پاسخ ها قرار نمیگیره! چجوری میتونم این کار رو بکنم؟
راستی افزونه ی DW Q&A رو هم کامل فارسی کردم حتما توی سایت روکش قرارش میدم
۱- نحوه استفاده از shortcode در قالب وردپرس
۲- این یکی یکم بیشتر کار داره و باید یکم کدهای افزونه را دسنکاری کنید. اول باید فایلی که مربوط به جواب ها و سوالات هست را پیدا کنید بعد قبل از حلقه ها کد زیر را قرار بدید.
بعد روی یک تگ html که خودتون در نظر دارید کد زیر را بگذارید.
وقتی کد ها فراخوانی می شوند به شکل زیر خواهند شد.
حالا خودتون دیگه می تونید با استفاده از همین کلاس های جدید ظاهر پرسش ها و پاسخ های مدیر را با سایر کاربران متفاوت کنید.
۳- افزونه را هم با توضیحات مناسبی از طریق بخش ارسال مطلب بفرستید تا در روکش منتشر کنیم.
سلام ممنون برای اولی ببینم چکار میکنم.
برای دومی ولی آخرش که هیچ کلاسی نیست که مخصوص مدیر باشه! مثلا اون author-1 چه معنی میده؟ آی دی کاربر هست؟
author-1 ثابت هست, می تونید کلا حذفش هم کنید.
خب من منظورم اینه که اون کلاسی که برای مدیر گفتم بسازم پس کجاس؟ الآن این کلاس هایی که شما لیست کردید که اصلا هیچ چیزی مخصوص مدیر ندارن که
با این کار کلاسی با نام مدیر ایجاد نمیشه بلکه اسم کسی که سوال را پرسیده به عنوان کلاس اون سوال یا جواب قرار داده می شود. شما می تونید با توجه به نام کاربری مدیران سایتتون برای اون ها ظاهری متفاوت را ایجاد کنید.
خب اینکه به دردی نمیخوره! من مدیرهام کم کم زیاد میشن و یکی دو تا هم نیستن!
ببخشید دیر جواب می دهم. ولی فعلا روش دیگه ای به ذهنم نمی رسه
باشه به هر حال خیلی خیلی ممنون. راستی من توی فرم تماس تون هم یه چیزی نوشتم جواب نمیدید؟
ببخشید یکم این مدت سرم شلوغ بود نتونستم به سوالات و درخواست ها جواب بدم, منتظر باشید به زودی جوابتون را می فرستم
اووه الآن دیگه فهمیدم کلا این کد اون چیزی که میخوام رو نمیگه.. اصلا بیخیال لطفا این دیدگاه های آخری رو کلا حذف کنید 🙂
همون چیزیه که می خواستم
مرسی
آموزنده و مفید بود واقعا مرسی از شما