http://rokesh.ir/add-custom-post-types-to-wordpress-author-archives-page/

افزودن پست سفارشی به صفحه آرشیو نویسندگان وردپرس

در آموزش های قبلی سایت روکش با نحوه ایجاد صفحه پروفایل سفارشی برای کاربران وردپرس آشنا شدیم. تا اینجای کار یاد گرفتیم که چگونه می توانیم یک صفحه اختصاصی برای کاربران وردپرس ایجاد کنیم و در آن اطلاعاتی در مورد کاربران به همراه آخرین پست های ارسالی توسط آنها را به نمایش بگذاریم. اما در این مطلب می خواهیم به سوال یکی از کاربران خوب سایت روکش پاسخ دهیم.

جناب وحید محمدی عزیز در مطلب آموزش ایجاد صفحه پروفایل سفارشی برای کاربران وردپرس می خواستند تا با نحوه نمایش پست هایی که توسط کاربران در افزونه پرسش و پاسخ 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');

امیدوارم این مطلب نیز مانند سایر مطالب سایت روکش مورد قبول و رضایت شما قرار گرفته باشد. منتظر نظرات زیبای شما هستیم.

دیدگاه کاربران

  1. سلام آقا خیلی ممنون خیلی لطف کردی
    دو تا سوال دیگه!! 🙂
    ۱) من توی css تم وردپرسی م خیلی تغییر ایجاد کردم و کلا یه قالب دیگه شده. اما مطمئن نیستم شاید توی فایل های دیگه هم تغییری ایجاد کرده باشم مثلا functions.php و author.php رو الآن فقط یادمه. حالا آپدیت برای تم اومده من چجوری از child theme ها برای آپدیت تم استفاده کنم؟
    ۲) از اونجایی که نمیتونیم از feedburner برای rss استفاده کنیم، چه روش ها و کدهایی هست که میتونم بزنیم تا rss سایت مون رو شخصی سازی کنیم؟

  2. رضا

    سلام مهندس سعید عزیز مطالب را خوندم خیلی خوب بود خیلی ممنونم.
    منشخصا از شما خواهش و درخواست خیلی مهمی دارم تا بتوانم سایتم را شروع به طراحی کنم:

    من با دستور SELECT در قالب وردپرسم در بالای سایتم ۱۰ لیست کشابی درست کردم
    در زیر آن در یک جدول، ۱۰کلمه در خانهای جدول نوشتم که لینک هستند به دسته هایی که در پنل وردپرسم ساختم.
    حالا میخواهم با کلیک بروی هرلینک از ده لینک ، زیر دسته های ان دسته در اولین گزینه منوی کرکره ای به نمایش در بیاید وبروزشده ترین مطالب آن زیر دسته ها در لیست منوی کرکره ای به نمایش در بیاید .

    مثال من بروی لینک مستند در جدولم کلیک بکنم در منوی کرکره ای که ساختم جدیدترین زیر دسته ها در هر یک از منوهای کرکره ایم نشان داده شود که با کلیک روی انها زیر منویی شامل ۱۰ تا از جدیدترین پست ها و مطالب آن زیر دسته را نمایش دهد.

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

    وسوال سوم من میخواهم ۲ سرچ داشته باشم یکی در عنوان های اصلی مطالب و دسته ها و زیر دسته ها و دیگری سرچ در کل سایتم.

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

    ممنونم منتظر جواب و راهنمایی و کدهای شما هستم.

    • سعید شعبانی

      ۱- منظورتون را خوب متوجه نشدم ولی اگر منظورتون ساخت منو کشویی باشه پیشنهاد می کنم آموزش گام به گام ساخت منو کشویی برای وردپرس را دنبال کنید.
      ۲- برای ساخت قالب های متفاوت برای آرشیو دسته بندی های وردپرس می تونید یک کپی از فایل category.php یا archive.php بگیرید و با نام id-category.php ذخیره کنید. به جای id هم باید id دسته مورد نظرتون را قرار بدید. بعد داخل این فایل جدیدی هر تغییری ایجاد کنید فقط برای دسته مورد نظرتون تغییرات اعمال می شوند.
      ۳- سعی می کنم به زودی نحوه انجام این کار را در روکش قرار بدم.

  3. سلام آقا سعید با تشکر فراوان از شما مجددا دو تا راهنمایی میخواستم ازتون:
    ۱) من افزونه ی myCred رو نصب کردم که برای امتیاز دادن استفاده میشه و تونستم با افزونه ی DW question and Answer هم هماهنگش کنم. حالا یه کاری رو میخوام انجام بدم و اون اینه که امتیاز هر کاربر رو جلوی اسمش بنویسم! چجوری میشه اینکار رو کرد؟ سایت افزونه ی myCred کلی shortcode و tamplate tag و… داره ولی خب من خیلی چیزی سرم نمیشه 😐 یعنی از shortcode ها نمیشه توی فایل های php استفاده کرد برای همین هم نمیفهمم باید چکار کنم. اگر میشه بگید که چه کدی رو توی چه فایلی از افزونه ی dw question and answer باید بنویسم؟
    ۲) میخوام پاسخ هایی که توسط مثلا مدیر و editor داده میشه یه حالت متفاوتی داشته باشن یعنی یه css متفاوتی براشون اعمال بشه اما متاسفانه هیچ class ی در حال حاضر برای مدیر و editor روی پاسخ ها قرار نمیگیره! چجوری میتونم این کار رو بکنم؟

    راستی افزونه ی DW Q&A رو هم کامل فارسی کردم حتما توی سایت روکش قرارش میدم

  4. اووه الآن دیگه فهمیدم کلا این کد اون چیزی که میخوام رو نمیگه.. اصلا بیخیال لطفا این دیدگاه های آخری رو کلا حذف کنید 🙂

  5. آموزنده و مفید بود واقعا مرسی از شما

کاربر گرامی برای ارسال دیدگاه اگر عضو روکش هستید باید سایت شوید در غیر اینصورت باید عضو شوید.