آموزش ساخت پست تایپ سفارشی در وردپرس و کار با post type
آموزش ساخت پست تایپ سفارشی در وردپرس و کار با post type
آیا شما هم دوست دارید با نحوه ی ایجاد post type در وردپرس آشنا شوید؟ یک پست تایپ سفارشی وب سایت وردپرسی شما را از یک بلاگ ساده، به یک سیستم مدیریت محتوای حرفه ای (CMS) تبدیل می کند.
بیشتر اوقات مردم به اشتباه وردپرس را یک پلتفرم منحصر به ساختن بلاگ دستهبندی میکنند و این در حالی است که در سالهای اخیر وردپرس به یکی از قویترین سیستمهای مدیریت محتوا تبدیل شده است.
به صورت پیشفرض، وردپرس با دو نوع سیستم ارائه محتوای برگه و پست ارائه میشود.
اما با این حال، شما میتوانید هر چند نوع مدل محتوایی که میخواهید به صورت شخصیسازی شده در آن ارائه دهید که به این مفهوم در وردپرس پست تایپ سفارشی میگویند.
در این جلسه از آموزش توابع وردپرس به شما آموزش خواهیم داد چگونه پست تایپ های سفارشی دلخواه خود را در وردپرس بسازید و همینطور چطور مثل یک حرفهای از آن استفاده کنید.
فبل از این که بریم برای ساخت پست تایپ سفارشی در وردپرس بدونه افزونه یکم توضیح بدیم اصلا پست تایپ چیست و چه کاربوردی دارد .
پست تایپ سفارشی یا Custom Post Type در وردپرس چیست و چه کاربوردی دارد ؟
سیستم مدیریت محتوای وردپرس که در سال (۲۰۰۳) روی کار آمد در ابتدا یک سیستم وبلاگدهی ساده بود که در اصل با همین پست تایپها بود که وردپرس را به یک سیستم مدیریت محتوای بسیار قوی تبدیل کرد.
پست تایپ در وردپرس در واقع همان محتوا های گوناگون در وردپرس است، نوشته ها و برگه ها از پست تایپ های پیشفرض وردپرس هستند.
Post type ها در یک جدول پایگاه داده (wp_posts) ذخیره و با ستونی به نام post_type از همدیگر متمایز میشوند.
چند نوع پست تایپ وردپرس به صورت زیر
- نوشته یا همان Post
- برگه یا همان Page
- ضمیمه یا همان Attachment
- بازبینی یا همان Revision
- منو ناوبری یا همان Nav Menu
شما میتوانید هر نوع پست تایپی را بسازید و هر اسمی بخواهید برای آنها انتخاب کنید. درنتیجه به آنها پست تایپهای سفارشی گفته میشود.
مثلاً پست تایپها میتواند Portfolio یا سبد و نمونه کار، Testimonials یا نظرات کاربران، Products یا محصولات یا برای دانلود فایل و غیره باشند.
یک post type سفارشی را میتوان با استفاده از تابع () Register_post_type به وردپرس اضافه کرد.
این کار بسیار ساده است و نیازی به استفاده از هیچ افزونه ای برای آن ندارید و میتوانید پست تایپهای سفارشی خود را بدون استفاده از افزونه ثبت کنید.
چه زمانی به یک پست تایپ سفارشی در وردپرس نیاز پیدا می کنیم؟
پست تایپ ها به ما در سازمان دهی و مرتب کردن هر چه بهتر مطالب و محتوا کمک می کنند.
post_type ها باعث می شود که وب سایت وردپرسی خود را آنگونه که می خواهیم بسازیم و نمایش دهیم.
همچنین می توانیم از تکسونومی های سفارشی نیز به جای دسته بندی های پیش فرض وردپرس، برای بهبود هر چه بهتر مطالب سایت استفاده کنیم.
اگر هم علاقه به کدنویسی وردپرس ندارید میتوانید از افزونه استفاه فرمایید یک افزونه است بنام Custom Post Type UI که میتوانید از لینک زیر دانلود فرمایید.
افزونهای که قصد معرفی اونو دارم با عنوان Custom Post Type UI در مخزن وردپرس به ثبت رسیده و تاکنون تونسته تا بیش از ۱ میلیون نصب فعال و کسب امتیاز ۴.۶ را ازآن خودش بکنه که با استفاده از اون میتونید تا اقدام به ایجاد پست تایپ دلخواه در وردپرس کنید.
برای استفاده از افزونه پست تایپ وردپرس ابتدا روی لینکزیر کلیک کنید تا به صفحه افزونه هدایت شده و دانلود نمایید و از قسمت افزونه ها بارگذاری فرمایید یا داخل جستجوی افزونه میتوانید کلمه Custom Post Type UI تایپ نمایید طبق تصویر بالا نصب و فعال نمایید.
ما در این جلسه از آموزش نمیخواهیم از افزونه استفاده کنم توسط توابع وردپرس میخواهیم پست تایپ سفارشی در وردپرس فعال کنیم .
دانلود افزونه
مراحل ساخت پست تایپ سفارشی وردپرس (بدونه استفاده از افزونه وردپرس)
ساخت پست تایپ به وسیله ی پلاگین مشکلی را نیز به همراه خواهد داشت.
زمانی که پلاگین را غیرفعال کنید، پست تایپی که ایجاد کرده اید هم از بین خواهد رفت یا حداقل ناپدید می شود اما هر دیتا یا مطلبی که در قالب آن پست تایپ ایجاد کرده بودید، بعد از غیرفعال کردن افزونه، باقی می ماند و پست تایپ مورد نظر دیگر از پنل ادمین قابل دسترسی نیست.
اگه میخواهید به صورت حرفه ای طراح قالب وردپرس بشید یک پشنهاد ویژه دارم قبل از شروع به کد نویسی برای ساخت پست تایپ سفارشی وردپرس اگه تازه شروع به طراحی قالب وردپرس کردید حتما از دوره طراحی قالب وردپرس دیدن فرمایید.
اگر برروی وبسایت مشتری کار میکنید و نمیخواهید افزونهای نصب کنید، در اینصورت میتوانید Post Type اختصاصی خود را با افزودن کد زیر در فایل functions.php پوسته خود، ایجاد کنید.
در ابتدا، ما یک نمونه کامل و کاربردی از این کار را، خیلی سریع برایتان انجام می دهیم تا مراحل کلی این روش را درک کنید. به کد زیر نگاهی بیندازید:
نکته : قبل از هر چیز حتما از فایل functions.php خود یک بکاپ تهیه فرمایید در صورت مشکل بتوانید بازیابی کنید .
1 2 3 4 5 6 7 8 9 |
function replywp_book_setup_post_type() { $args = array( 'public' => true, 'label' => __( 'Books', 'textdomain' ), 'menu_icon' => 'dashicons-book', ); register_post_type( 'book', $args ); } add_action( 'init', 'replywp_book_setup_post_type' ); |
بعد از قرار دادن کد های بالا داخل فایلfunctions.php کاری که این کد انجام میدهد این است که یک پست تایپ به اسم book را به همراه یک آرایهای از argumentها ثبت میکند. این argument ها درواقع گزینههای مورد استفاده در پست تایپ هستند. این آرایه دو بخش دارد، بخش اول لیبلها هستند که خودشان نیز آرایه هستند. بخش دوم که دیگر arguments ها هستند شامل نمایش یا همان visibility، آرشیو بودن پست یا همان has archive و slug است که در url های این پست تایپها استفاده خواهد شد.
این کد خلاصه شده است اگه می خواهید خیلی حرفه ای و تمام قسمت ها را خودتان سفارشی کنید میتوانید از کد زیر استفاده نمایید.
حال بیایید به یک کد حاوی پاره ای از توضیحات، نگاهی بیندازیم. این کد آپشن های بیشتری را به پست تایپ ما اختصاص می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
function replywp_post_type() { $labels = array( 'name' => _x( 'Books', 'Post type general name', 'textdomain' ), 'singular_name' => _x( 'Book', 'Post type singular name', 'textdomain' ), 'menu_name' => _x( 'Books', 'Admin Menu text', 'textdomain' ), 'name_admin_bar' => _x( 'Book', 'Add New on Toolbar', 'textdomain' ), 'add_new' => __( 'Add New', 'textdomain' ), 'add_new_item' => __( 'Add New Book', 'textdomain' ), 'new_item' => __( 'New Book', 'textdomain' ), 'edit_item' => __( 'Edit Book', 'textdomain' ), 'view_item' => __( 'View Book', 'textdomain' ), 'all_items' => __( 'All Books', 'textdomain' ), 'search_items' => __( 'Search Books', 'textdomain' ), 'parent_item_colon' => __( 'Parent Books:', 'textdomain' ), 'not_found' => __( 'No books found.', 'textdomain' ), 'not_found_in_trash' => __( 'No books found in Trash.', 'textdomain' ), 'featured_image' => _x( 'Book Cover Image', 'Overrides the “Featured Image” phrase for this post type. Added in 4.3', 'textdomain' ), 'set_featured_image' => _x( 'Set cover image', 'Overrides the “Set featured image” phrase for this post type. Added in 4.3', 'textdomain' ), 'remove_featured_image' => _x( 'Remove cover image', 'Overrides the “Remove featured image” phrase for this post type. Added in 4.3', 'textdomain' ), 'use_featured_image' => _x( 'Use as cover image', 'Overrides the “Use as featured image” phrase for this post type. Added in 4.3', 'textdomain' ), 'archives' => _x( 'Book archives', 'The post type archive label used in nav menus. Default “Post Archives”. Added in 4.4', 'textdomain' ), 'insert_into_item' => _x( 'Insert into book', 'Overrides the “Insert into post”/”Insert into page” phrase (used when inserting media into a post). Added in 4.4', 'textdomain' ), 'uploaded_to_this_item' => _x( 'Uploaded to this book', 'Overrides the “Uploaded to this post”/”Uploaded to this page” phrase (used when viewing media attached to a post). Added in 4.4', 'textdomain' ), 'filter_items_list' => _x( 'Filter books list', 'Screen reader text for the filter links heading on the post type listing screen. Default “Filter posts list”/”Filter pages list”. Added in 4.4', 'textdomain' ), 'items_list_navigation' => _x( 'Books list navigation', 'Screen reader text for the pagination heading on the post type listing screen. Default “Posts list navigation”/”Pages list navigation”. Added in 4.4', 'textdomain' ), 'items_list' => _x( 'Books list', 'Screen reader text for the items list heading on the post type listing screen. Default “Posts list”/”Pages list”. Added in 4.4', 'textdomain' ), ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'book' ), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ), ); register_post_type( 'book', $args ); } add_action( 'init', 'replywp_post_type' ); |
خوب بعد از قرار دادن کدهای بالا می اگه داخل پیشخوان وردپرس را یک بار ببینید یک قسمت به نام book اضافه خواهید شد که این کد های خیلی آپشن های زیاد به ما میده.
اما یک سختی که داره باید تمام قسمت ها را باید ترجمه باید کنیم .
شاید بخشی از کد که ما در ان مقدار hierarchical را false وارد کردیم، نظر شما را جلب کرده باشد. اگر خواستید که رفتار این پست تایپ مانند برگه ها باشد یا مثل برگه ها در وردپرس عمل کند، مقدار آن را true قرار دهید.
مطلب دیگری که باید بگوئیم در رابطه با استفاده ی مکرر از رشته ی twentytwenty است. به این رشته “تکس دامین” یا text-domin گفته می شود.
اگر قالب وردپرسی شما قابل ترجمه است و دارید از ترجمه ی آن استفاده می کنید و همچنین می خواهید که پست تایپ سفارشی شما هم ترجمه پذیر باشد، آنگاه باید تکس دامینی که قالب شما استفاده میکند را در کد بالا تعیین کنید.
نمایش پست تایپ های سفارشی در قالب وردپرس
وردپرس به صورت پیشفرض، قابلیت نمایش پست تایپهای اختصاصی شما را دارد. زمانی که تعدادی از این پست تایپها را بصورت نمونه ایجاد کردید، میتوانید برای نمایش آن اقدام کنید.
چند روش برای نمایش پست تایپها وجود دارد که میتوانید از آنها استفاده کنید و البته هرکدام از آنها، فایده خاص خود را دارد.
در جلسات بعدی به شما آموزش میدم که چطور این پست ها را داخل قالب نمایش بدید .
امیدواریم آموزش کد ساخت پست تایپ سفارشی در وردپرس مورد توجه شما قرار گرفته باشد و برای شما کاربردی و مفید باشد.و مورد استفاده شما قرار بگیرد منتظر آموزش بعدی پاسخ وردپرس باشید.
سلام و وقت بخیر
سوالی داشتم از تیم پاسخ وردپرس
من پست تایپ خودم رو ساختم یه قابلیت میخوام به پست تایپم اضافه بشه که کاربران که ثبت نام میکنند و در داخل سایت مطلبی قرار میدن از نظر تعداد مطلب و مدت مطلب محدود باشه و اگر تمدید نشه اون مطلب هم حذف بشه!؟ میتونید راهنمایم کنید؟
سلام خدمت شما دوست گرامی در این زمینه فکر کنم که افزونه نوشته شده است داخل گوگل سرچ فرمایید موفق و سر بلند باشید