نحوه ایجاد و استفاده از custom post type پست تایپ سفارشی وردپرس

پست تایپ سفارشی در وردپرس
عرض سلام و وقت بخیر خدمت همه دوستان وردپرسی! با یکی دیگه از مقالات آموزش وردپرس در خدمتون هستم و میخوام نحوه ایجاد و استفاده از custom post type یا پست تایپ سفارشی در وردپرس رو خدمتون آموزش بدم.
پست تایپ های پیشفرض وردپرس :
بطور پیشفرض ۵ نوع پست تایپ با نام های post – page – Attachment – Revision – Nav Menu در وردپرس وجود دارد که کاربردی ترین اونها پست تایپ post و page هستن، که پست تایپ post یا همون نوشته ها برای انتشار مطالب و پست تایپ page برای انتشار برگه هایی مثل درباره ما و تماس با ما و… به کار میرن.
آموزش تغییر ظاهر یک دسته خاص در وردپرس + فیلم آموزشی
پست تایپ سفارشی یا custom post type چیست و چه کاربردی دارد؟
اگر شما توی سایتتون دو نوع مطلب منتشر میکنین که از لحاظ محتوا و نحوه نمایش با هم متفاوت هستن پس شما نیاز دارید که یک پست تایپ سفارشی برای محتوا های خاص سایتتون تعریف کنید. به طور مثال الان در سایت وبسافت۳ به غیر از مطالبی که در قالب متن و فیلم آموزشی منتشر میشه یه نوع دیگه ای داریم که بصورت دوره یا پکیج های آموزشی منتشر میشه که دارای قالب و نمایش متفاوتی هست و ما برای انتشار دوره های آموزشی یک پست تایپ سفارشی تعریف کردیم.
نحوه ایجاد custom post type یا پست تایپ سفارشی در وردپرس :
برای ایجاد یک پست تایپ سفارشی ۲راه وجود داره، یکی استفاده از افزونه ها هست که بصورت خودکار اینکار رو براتون انجام بده و راه دوم بصورت دستی هست که با اضافه کردن چند خط کد ساده در فایل فانکشن قالبتون این کار رو انجام بدین تا مدیریت بهتری هم روش داشته باشین و توصیه ما هم استفاده از راه دوم هست .
برای این کار باید کد زیر رو در فایل فانکشن قالبتون قرار بدین (اگر قالبتون فایلی با نام functions.php نداره اون رو بسازید.) – در مورد کد هم توضیح میدم.
add_action( 'init', 'my_function' ); function my_function() { $labels = array( 'name' => __( 'دوره های آموزشی' ), 'singular_name' => __( 'دوره ها' ), 'menu_name' => __( 'دوره آموزشی' ), 'name_admin_bar' => __( 'دوره' ), 'add_new' => __( 'افزودن دوره' ), 'add_new_item' => __( 'پست مخصوص دوره های آموزشی' ), 'new_item' => __( 'پست جدید' ), 'edit_item' => __( 'ویرایش پست' ), 'view_item' => __( 'مشاهده پست' ), 'all_items' => __( 'همه دوره ها' ), 'search_items' => __( 'جستجو در بین دوره ها' ), 'parent_item_colon' => __( 'مادر' ), 'not_found' => __( 'مطلب یافت نشد' ), 'not_found_in_trash' => __( 'مطلب در زباله دان یافت نشد' ) ); $args = array( 'labels' => $labels, 'description' => __( 'پست تایپ دوره های آموزشی' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'course' ), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ) ); register_post_type( 'course', $args ); }
اضافه کردن برچسب به پست تایپ سفارشی
این کد دقیقا چیکار میکنه؟
طبق تصویر زیر یک منو با نام دوره آموزشی به پنل وردپرس اضافه میشه که کارکردش مثل بخش نوشته هاست، همینطور که در تصویر زیر میبینید یک ادیتور برای نوشتن مطلب و عنوان و باکس تصویر شاخص وجود داره (البته اضافه شدن این موارد رو باید در کدها تعریف کنید که توضیح میدم)
توضیحات کد :
در خط اول با استفاده از تابع add_action به هوک init یک فانکشن با نام my_function متصل کردیم و بعدش هم اون فانکشن رو تعریف کردیم.
در قسمت labels مشخص میکنیم که عناوین قسمت های مختلف این پست تایپ چی باشه مثلا اسم منو، زیر منوهاو… که درواقع یه جور ترجمه هست و کاملا مشخصه که مربوط به چیه.
در قسمت args مهمترین بخشش rewrite هست که اسلاگ رو برابر course قرار دادیم (نام این بخش برای ثبت پست تایپ لازم میشه) – توی بخش supports هم باید امکاناتی که برای پست تایپمون نیاز داریم رو مشخص کنیم، به عنوان مثال ما در این کد title رو فراخوانی کردیم برای نوشتن عنوان – editor رو فراخوانی کردیم برای نوشتن محتوا – thumbnail برای وارد کردن تصویر شاخص – comments برای فراخوانی باکس دیدگاه ها و…
در آخر هم با استفاده از تابع register_post_type پست تایپ سفارشی مون رو ثبت کردیم توجه داشته باشید که آرگومان اول این تابع باید دقیقا همون مقداری باشه که توی قسمت rewrite وارد کردیم که مقدارش course هست (که گفتم برای ثبت پست تایپ لازم میشه)
نمایش مطالب پست تایپ سفارشی در قالب :
خب ما یه پست تایپ سفارشی با نام دوره آموزشی ایجاد کردیم و چندتا دوره آموزشی هم طبق تصویر زیر منتشر کردیم اما حالا چجوری اونهارو در قالب نمایش بدیم؟
برای اینکار در جایی که میخواین پست هاتون نمایش داده بشه از این حلقه استفاده میکنید.
<?php $my_query = array('post_type' => 'course','posts_per_page' => 6); $query1 = new WP_Query($my_query); while($query1->have_posts()) : $query1->the_post(); ?> <article class="product"> <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?> </a></h3> <div class="img-product"><?php the_post_thumbnail(); ?></div> </article> <?php endwhile; wp_reset_postdata(); ?>
امیدوارم این آموزش هم مورد استفاده شما کاربران عزیز قرار گرفته باشه و اگر هم سوال یا ابهامی در رابطه با این مطلب و مبحث پست تایپ ها داشتین حتما در قسمت دیدگاه های همین پست مطرح کنید تا انشاالله برطرف بشه – موفق باشین یا حق
مطالب زیر را حتما مطالعه کنید
آموزش html pdf – کتاب آموزش html و css رایگان
آموزش منوی تنظیمات وردپرس فول آپشن + فیلم آموزشی
سوییچ فوری در بین حساب های کاربری در وردپرس
وردپرس ۴٫۹٫۴ ، وردپرس به ایستگاه ۴٫۹٫۴ رسید
چرا باید سرعت سایت تان را افزایش دهید؟
آموزش جامع ساخت لیست ایمیل در وردپرس – ایمیل مارکتینگ
26 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
شما برای نمایش در سایت یه کد دادید که هرجا می خواهیم بزاریم ، نمیشه یه فایل باشه که قالب مطلب متفاوت ما نیز فرق کنه ؟؟
سلام دوست عزیز – باید از چهارچوب قالب خودتون استفاده کنید – چهارچوب اصلی قالب که مشخصه (هدر – فوتر – سایدبار و..) فقط نوعی که میخواین پست هاتون نمایش داده بشه رو خودتون باید طبق قالب خودتون(جوری که به شکل کل قالب بخوره) html css بنویسین
برای اینکه تو یه فایل جدا نشون بده میتونید یه فایل بسازید به اسم single-course.php که course اینجا اسم نوع پست جدیده که تو کدهای این آموزش نوشته، اگه بخواید دسته بندیاش هم یجور دیگه نشون بده میتونید فایل archive-course.php بسازید
درود بر شما
ممنون از آموزش خوبتون
یه سئوالی دارم که امیدوارم پاسخ بدین
من یه فیلد جدید درست کردم برای این پست تایپ سفارسی
چطوری اون فیلد رو نمایش بدم
سلام دوست عزیز متوجه سوالتون نشدم؟ فیلد جدید برای پست تایپ؟
سلام. وقتتون بخیر
چطور میشه یه فیلدی مثل لینک دانلود هم به این پست تایپ اضافه کرد و از اون در قالب استفاده کرد؟
این موارد مربوط به کدنویسی تخصصی وردپرس میشه که در دوره ۷۰ جلسه ای طراحی قالب وردپرس بصورت کامل آموزش داده شده
سلام، مرسی از آموزش خوبتون
من میخوام نوع جدیدم دوتا عنوان و دوتا ویرایشگر متن داشته باشه باید چیکار کنم؟
بعد برای فراخوانی یه عنوان the_title داریم اگه دوتا باشه چجوری فراخوانی کنم؟
چجوری میشه یه فایل جداگانه مثه، single.php و page.php برای این نوع سوم هم ایجاد کنم؟
سلام برای اینکه دوتا عنوان و دوتا ویرایشگر متن داشته باشید راهی که بنظرم میرسه اینه که دوتا متاباکس ایجاد کنید(یکی برای عنوان دوم و یکی برای ویرایشگر دوم) و بعد با استفاده از توابع مربوط به فراخوانی مقادیر متاباکس ها اونهارو نمایش بدید.
صفحه داخلی پست تایپ هم به فرض اینکه اسم پست تایپتون product باشه باید یک فایل با نام single-product.php ایجاد کنید
متشکرم خیلی لطف کردید
من از کد دومتون که گفتید هرجا بخوایم فراخوانی بشه اون کد رو بذارید، داخل فایل category-course.php استفاده کردم تا نحوه نمایش دسته های این نوع پست سفارشی فرق کنه، ولی تغییری نکرد، ینی اصلا پستای سفارشی رو تو هیچ دسته ای نشون نمیده، مثلا اگه من رو یه دسته کلیک کنم پستای معمولی که عضو اون دسته هستن رو نشون میده، ولی پستای سفارشی عضو اون دسته رو نشون نمیده، حتی تو آرشیو هم نشون نمیده!
سلام – جواب سوالتون توضیح و توجیح زیادی میخواد و اصلا چیزی که میگید اصولا اشتباه هست یا اینکه من بد متوجه شدم
اگر پیگیر مشکلتون هستید در تلگرام پیام بدید تا بررسی بشه و انشاالله برطرف بشه
همچنین در گروه پرسش و پاسخ هم درخدمتتان هستیم لینک : https://t.me/joinchat/DBhB_UPCzOQTrwBqySph9w
سلام تو مطلب تکسونومی سفارشی پیداش کردم، مرسی بخاطر سایت مفیدتون
خوب توضیح دادی اما این پلاگینی که برای نوشتن کد ازش استفاده میکنی مشکل داشت و نشد کدهات رو کپی کنم برای تست
سلام
شما گفتید که این کد رو هر جا خواستید نمایش بده بزارید ولی میشه شفاف کنید که مثال بزنید مثلاذ کجا؟
فردا فیلم آموزشی این آموزش رو هم اضافه میکنیم عملی یادبگیرید
با سلام برای نمایش یه سری فیلد دلخواه از wp_postmeta ها مثل مثلا برای مشاغل شماره همراه ، موقعیت و …
چیکار باید کرد
این موارد رو بصورت کامل در دوره ۷۰ جلسه ای طراحی قالب وردپرس توضیح دادیم :
websoft3.com/wordpress-learn/
سلام و خسته نباشید خدمت شما
ممنون از آموزش خوبتون بخش اول آموزش رو من متوجه شدم ولی بخش دوم آموزش برای افراد مبتدی مثل من کمی نامفهوم هست و نتونستم بفهمم که چجوری باید پست هام رو نمایش بدم. من میخوام یه پست تایپ داشته باشم که از کد بالا استفاده میکنم و میخوام بشه این پست تایپ رو مثل بقیه مطالب سایت تو هر جایی که میخوام استفاده کنم کد دومی که دادید رو دقیقا باید کجا بذارم در چه فایلی و کجای فایل؟
لطفا طوری توضیح بدین که برای یک مبتدی هست. ممنون و متشکر از زحمات شما
سلام . من طبق آموزش پیش رفتم و دقیق ایجاد شد اما یه مشکل دارم. وقتی برروی لینک کلیک می کنم به جای اینکه وارد محتوایی بشه که منتشر کردم دوباره وارد صفحه ایندکس میشه. ب عنوان مثال با زدن ادامه مطالب محتوایی که در نوشته ها منتشر کردیم نمایش میده اما اینجا لینک به محتوا نمیره.
باید چیکار کنم ؟ ممنون میشم راهنمایی کنید
سلام بزرگوار مشکل از صفحه سینگل پست تایپتون هست – باید فایلی بانام single-posttypename.php هم توی پروژتون ایجاد کنید (بجای posttypename اسم پست تایپتون رو بزارید) تا از این فایل برای نمایش ادامه مطلبتون استفاده کنه
سلام . من طبق آموزش پیش رفتم و دقیق ایجاد شد اما یه مشکل دارم. وقتی برروی لینک کلیک می کنم به جای اینکه وارد محتوایی بشه که منتشر کردم دوباره وارد صفحه ایندکس میشه. ب عنوان مثال با زدن ادامه مطالب محتوایی که در نوشته ها منتشر کردیم نمایش میده اما اینجا لینک به محتوا نمیره.
باید چیکار کنم ؟ ممنون میشم راهنمایی کنید
سلام بزرگوار مشکل از صفحه سینگل پست تایپتون هست – باید فایلی بانام single-posttypename.php هم توی پروژتون ایجاد کنید (بجای posttypename اسم پست تایپتون رو بزارید) تا از این فایل برای نمایش ادامه مطلبتون استفاده کنه
یک فایل به اسم single-course ایجاد کردم(چون اسم پست تایپ تغییر ندادم) اما بازم با زدن ادامه مطالب میره داخل صفحه ایندکس
اگه اسم پست تایپتون course باشه با ایجاد فایل single-course.php باید درست بشه
سلام. من به کمک کدهایی که شما گفتید پست تایپ اسلایدشو رو ساختم و توسط کدها گفتم که عکس های اسلایدشو همون عکس شاخص باشه. وقتی سه تا عکس منتشر کردم به کمک پنل اسلایدشو ام به جای اینکه هر سه عکس داخل یک اسلایدشو باشه سه تا اسلایدشو مجزا ساخت. باید چیکار کنم ؟