
پست تایپ نوعی صفحهی سفارشی سازی شده برای نوشته، برگه و یا محصولات است و به شما این امکان را میدهد به کمک انواع پستهای سفارشی، وبسایت استاندارد وردپرس خود را به یک سیستم مدیریت محتوای کامل تبدیل کنید.
علاوه بر این، شما میتوانید به کمک post type سفارشی سازی شده، برخی از ویژگیهای منحصر به فرد را در سایت خود معرفی کنید تا از سایر سایتها متمایز شود.
ما در این مقاله قصد داریم نحوهی ساخت پست تایپ را بدون استفاده از افزونه و به کمک افزونه Custom Post Type UI آموزش دهیم.
در صورت تمایل میتوانید از مقاله طراحی فروشگاه بدون کدنویسی دیدن کنید و پیشنهادات و نظرات خود را در کامنت بنویسید.
شما همچنین امکان استفاده از پشتیبانی وردپرس بهصورت رایگان را در مجموعهی المنتورسایت خواهید داشت.
پست تایپ وردپرس چیست؟
با وردپرس میتوان انواع مختلفی از محتوا ایجاد کرد. یک محتوا را پست نیز میگویند، همچنین این پست یک نوع پست خاص به حساب میآید. بهطورکلی ، واژهی پست میتواند به هر نوع محتوایی در وردپرس اشاره کند.
Post type ها در یک جدول پایگاه داده (wp_posts) ذخیره و با ستونی به نام post_type از همدیگر متمایز میشوند.
بهطور پیش فرض ، پنج پست تایپ در وردپرس موجود است :
- نوشته (post type :”پست”)
- صفحهیا برگه (post type :”صفحه”)
- پیوست یا ضمیمه (post type :”پیوست”)
- تجدید نظر یا بازبینی ( post type: “تجدید نظر”)
- منوی ناوبری ( post type : ” nav_menu_item “)

شما میتوانید هر نوع پست تایپی را بسازید و هر اسمی بخواهید برای آنها انتخاب کنید. درنتیجه به آنها پست تایپهای سفارشی گفته میشود.
مثلاً پست تایپها میتواند Portfolio یا سبد و نمونه کار، Testimonials یا نظرات کاربران، Products یا محصولات و غیره باشند.
یک post type سفارشی را میتوان با استفاده از تابع () Register_post_type به وردپرس اضافه کرد.
این کار بسیار ساده است و نیازی به استفاده از هیچ افزونه ای برای آن ندارید و میتوانید پست تایپهای سفارشی خود را بدون استفاده از افزونه ثبت کنید.
مراحل ساخت پست تایپ سفارشی | بدون افزونه
همانطور که در بالا اشاره کردیم از تابع () Register_post_type برای ایجاد یک پست تایپ استفاده میشود و فقط از طریق اقدام init فراخوانی میشود. در زمان ایجاد یک پست تایپ ، همیشه طبقهبندیهایی را به کمک تابع () Register_taxonomy از آن تعریف و ثبت کنید.
کافیست شما فایل functions.php قالب فعلی خود را تغییر دهید. این مسیر را دنبال کنید و فایل /wp-content/themes/theme_name/functions.php را باز کرده و کد زیر را در این فایل قرار دهید.
// Product Custom Post Type
function product_init() {
// set up product labels
$labels = array(
‘name’ => ‘Products’,
‘singular_name’ => ‘Product’,
‘add_new’ => ‘Add New Product’,
‘add_new_item’ => ‘Add New Product’,
‘edit_item’ => ‘Edit Product’,
‘new_item’ => ‘New Product’,
‘all_items’ => ‘All Products’,
‘view_item’ => ‘View Product’,
‘search_items’ => ‘Search Products’,
‘not_found’ => ‘No Products Found’,
‘not_found_in_trash’ => ‘No Products found in Trash’,
‘parent_item_colon’ => ”,
‘menu_name’ => ‘Products’,
);
// register post type
$args = array(
‘labels’ => $labels,
‘public’ => true,
‘has_archive’ => true,
‘show_ui’ => true,
‘capability_type’ => ‘post’,
‘hierarchical’ => false,
‘rewrite’ => array(‘slug’ => ‘product’),
‘query_var’ => true,
‘menu_icon’ => ‘dashicons-randomize’,
‘supports’ => array(
‘title’,
‘editor’,
‘excerpt’,
‘trackbacks’,
‘custom-fields’,
‘comments’,
‘revisions’,
‘thumbnail’,
‘author’,
‘page-attributes’
)
);
register_post_type( ‘product’, $args );
// register taxonomy
register_taxonomy(‘product_category’, ‘product’, array(‘hierarchical’ => true, ‘label’ =>
‘Category’, ‘query_var’ => true, ‘rewrite’ => array( ‘slug’ => ‘product-category’ )));
}
add_action( ‘init’, ‘product_init’ );
register_post_type() function:
<?php register_post_type( $post_type, $args ); ?>
تابع () Register_post_type دو پارامتر ، $ post_type و $ args را میپذیرد:
- $ post_type : پست تایپ سفارشی خود را وارد کنید
- $ args : مجموعهای از آرگومانها یا آرایه هاست
register_taxonomy() function:
<?php register_taxonomy ( $taxonomy, $object_type, $args ); ?>
تابع () register_taxonomy سه پارامتر، $ taxonomy ، $ object_type و $ args را میپذیرد.
- $ taxonomy :نام طبقهبندی
- $ object_type : نوع شی برای طبقهبندی آن
- $ args : مجموعهای از آرگومانها و آرایه ها
هر دو تابع register_post_type و register_taxonomy آرایههای زیر را در پارامتر $args قبول میکنند :
- label _ یک نام توصیفی برای پست تایپ
- labels – مجموعهای از برچسب ها برای پست تایپ
- description – شرح مختصری از پست تایپ
- public – قابلیت بازدید برای نویسندگان و خوانندگان
- show_ui – پیش فرض برای پست تایپ در پنل مدیریت ایجاد UI این که آیا یک میکند یا خیر؟
- show_in_nav_menus – آیا پست تایپ در منوی ناوبری موجود است؟
- show_in_menu – آیا پست تایپ در منوی مدیریت ظاهر میشود یا خیر؟
- show_in_admin_bar – پست تایپ موجود در نوار مدیریت
- menu_position – موقعیت پست تایپ به ترتیب منو
- menu_icon – نماد و آیکن منو را مشخص کنید
- capability_type_ این رشته برای ایجاد قابلیتهای خواندن ، ویرایش و حذف استفاده میشود
- capabilities – مجموعهای از قابلیتها برای پست تایپ
- map_meta_cap – آیا از قابلیت پیش فرض داخلی استفاده میشود یا خیر
- hierarchical – آیا پست تایپ سلسله مراتبی است
- supports – نام مستعار برای تماس مستقیم () add_post_type_support
- register_meta_box_cb – یک تابع پاسخ به تماس ارائه دهید که هنگام تنظیم متا باکسها برای ویرایش فرم فراخوانی میشود
- taxonomies – مجموعهای از طبقهبندیهای ثبت شده
- has_archive – بایگانی پست تایپ را فعال میکند
- permalink_epmask – بازنویسی پیش فرض endpoint bitmasks
- rewrite – باعث مدیریت بازنویسیها برای پست تایپ میشود
- query_var – query_var را برای پست تایپ تنظیم میکند
- can_export – آیا میتوان پست تایپ را صادر کرد.
- show_in_rest – آیا پست تایپ در REST API نمایان است یا خیر ؟
- rest_base – در صورت دسترسی از REST API سرعت کند میشود.
- rest_controller_class – یک کنترل کننده سفارشی اختیاری به جای WP_REST_Posts_Controller
- _builtin- پست تایپ بومی است یا “داخلی”
- _edit_link – لینک برای ویرایش ورودی با پست
پس از قرار دادن کد نمونه در تابع function.php قالب فعلی خود، خواهید دید که منوی محصولات در سمت چپ پنل مدیریت وردپرس ظاهر میشود. این منوی پست تایپ سفارشی به شما امکان میدهد محتوای جداگانه را برای پست تایپ مشاهده، اضافه، ویرایش وحذف کنید. همچنین ، میتوانید دستههای سفارشی post type را نیز اضافه و مدیریت کنید.

مراحل ساخت پست تایپ سفارشی | به کمک افزونه Custom Post Type UI

این افزونه به شما امکان میدهد :
- پست تایپهای و طبقهبندیهای سفارشیشده خود را ایجاد و پیکربندی کنید.
- طبقهبندیهای داخلی و سفارشی را ضمیمه پست تایپها کنید.
- برچسب گذاری پیشرفته برای پست تایپها داشته باشید.
- مدیریت نمایش پست تایپها و طبقهبندیهای جدید شما را برعهده ی شما میگذارد. و خود افزونه انجام نمیدهد.
یکی از محبوبترین افزونهها برای پستهای سفارشی و طبقهبندی در فهرست افزونههای رسمی ، Custom Post Type UI است که مجموعهای از گزینهها و ویژگیهای عالی را بهصورت رایگان ارائه میدهد.
استفاده از این افزونه بسیار آسان است. پس از نصب ، یک داشبورد زیبا برای کار خواهید داشت. در این قسمت همه گزینهها و ویژگیهای افزونه به راحتی در دسترس هستند.
این افزونه به شما امکان میدهد پست تایپهای و طبقهبندیهای جدید مربوطه ایجاد کنید. همچنین میتوانید post type هایی را که قبلاً در سایت خود دارید ویرایش کنید.
نکته جالب دیگر در مورد این افزونه این است که میتوانید یک پست سفارشی که قبلاً در سایت دیگری دارید را import یا export کنید.
تنها نقطه ضعف افزونه این است که نمایش پست تایپهای ثبت شده یا طبقهبندیها در قالب فعلی شما را مدیریت نمیکند. فقط آنها را برای شما ثبت خواهد کرد.
نحوهی کار با افزونه Custom Post Type UI برای ساخت پست تایپ
پس از نصب افزونه، گزینه “CPT UI” به پنل پیشخوان وردپرس شما اضافه خواهد شد.
کافیست بر روی گزینه “Add / Edit Post Types” < CPT UI کلیک کنید و در این بخش با یک فرم مواجه خواهید شد که باید فرم را تکمیل نمایید.

برای مثال در لیست زیر موارد را برای ساخت یک پست تایپ به نام پروژهها تکمیل کردیم و به جای آن شما میتوانید از هر پست تایپ دیگری استفاده کنید :
Post Type Slug: در این فیلد پیوند یکتا برای پست تایپ دلخواه خود درج کنید.
Plural Label: در این فیلد شما باید عنوان منوی اصلی در پیشخوان وردپرس برای نمایش پست تایپ خود را وارد کنید.
Singular Label: در این قسمت عنوان دلخواه خود را برای زیر منوی پست تایپ وارد کنید.
در نهایت پس از انجام این سه قسمت بر روی دکمه Add post Type کلیک کنید تا پست تایپ شما ایجاد شود.

جمعبندی نهایی
شما برای ساخت یک پست سفارشی مثل “پروژهها”، “کتابها” یا “موزیکها” و … نیاز به یک ویژگی در وردپرس به نام پست تایپ دارید.
Post type ها یک صفحهی سفارشیشده برای نوشته ، برگه ها و یا حتی محصولات هستند. ما در این مقاله دو راه برای ساخت این پست تایپها را توضیح دادیم. روشی که بهصورت دستی باید در تابع function.phpقالب خود وارد کنید و روشی که به کمک افزونه میتوانید انجام دهید.
در صورت تمایل میتوانید به مقاله آموزش المنتور و همچنین مهمترین ابزارهای تست سرعت وبسایت نیز مراجعه کنید.
منبع : codexworld , codeinwp




29 پاسخ
سلام این کد رو در مسیری که گفتید کپی میکنم اما این خطا میده :
تغییرات کد PHP شما، به دلیل یک خطا در خط 281 از فایل hello-elementor\functions.php بازگردانده شد. لطفا اصلاح نمایید و دوباره سعی کنید که ذخیره نمایید.
syntax error, unexpected token “new”, expecting “)”
سلام وقتتون بخیر!
دو مشکل در استفاده از جت انجین در سایتم پیش آمده
اول وقتی با پست تایپ ساخته پست منتشر شده را مشاهده میکنم میگه صفحه پیدا نشد-پیوند های یکتا را هم ریفرش کردم
و دوم اینکه میتافیلد هایی که که تازه میسازم و قبلآ ساخته بودم را نشان نمیده که ویرایش یا حذف کنم
پیشاپیش ممنون بابت پاسختون
سلام وقت شما هم بخیر
۱. مشکل اول معمولاً به تنظیمات پست تایپ در JetEngine مربوط میشود؛ مطمئن شوید گزینه Public و Has Archive فعال باشد و بعد از آن پیوندهای یکتا را مجدد ذخیره کنید.
۲. برای مشکل متافیلدها، بررسی کنید گروه فیلدها به پست تایپ موردنظر متصل باشد و در تنظیمات نمایش، گزینههای ویرایش فعال باشد.
موفق باشید
سلام و درود
من یک پست تایپ با کدنویسی ساختم میخواهم یک قالب پیشفرض برای صفحات سینگل و یک قالب پیشفرض بری صفحات آرشیو این پست تایپ تعریف کنم. همچنین میخواهم در صورتیکه از پوسته ساز المنتور برای صفحات تکی یا آرشیو این پست تایپ قالبی را تعریف کردم، قالب المنتور نمایش داده شود.
ممکنه راهنمایی کنید؟
سلام و درود بر شما
برای پست تایپ سفارشی، فایلهای single-{post_type}.php و archive-{post_type}.php رو بسازید تا قالب پیشفرض داشته باشید اگر با المنتور قالب ساختید، المنتور بهطور خودکار جایگزینشون میکنه، فقط حواستون باشه show_in_rest => true باشه و اگه لازم شد با فیلتر elementor_pro/utils/is_custom_post_type_support پشتیبانی المنتور رو فعال کنید.
موفق باشید
با سلام آیا امکان این که بخش ویژگی ها و پیکربندی ویژگی های ووکامرس رو با افزونه به پست تایپ اضافه کرد
سلام درود بر شما
برای این منظور باید کدنویسی کنید و همچنین میتونید از افزونه های فیلد های سفارشی استفاده کنید
یه پست تایپ میخوام مثل برگه و نوشته که slug رو نمایش نده ، نمیخوام اسم پست تایم slug یا نامک داشته باشه و بعد اتمام دامین پست و محتوای پست تایپ رو نشون بده دقیقا مثل برگه ها و نوشته ها
سلام خدمت شما
برای این کار، در هنگام ثبت Post Type، کافی است مقدار rewrite را به شکل زیر تنظیم کنید:
‘rewrite’ => [‘slug’ => ‘/’],
این تنظیم باعث میشود که نامک (Slug) نمایش داده نشود و URL مانند صفحات و نوشتهها عمل کند.
سلام وقت به خیر
چطور میتونیم پست تایپهای خود قالب رو اسم شون رو ویرایش کنیم مثلا من یه قالب گرفتم یه پست تایپ داره به نام پروژه ها میخوام اسمش رو بزارم خودروها ممنون میشم راهنماییم کنید.
سلام وقت بخیر
برای ویرایش نام پست تایپ در وردپرس، شما باید تغییراتی در کدهای قالب خود ایجاد کنید. ابتدا باید به فایلهای قالب دسترسی پیدا کنید و سپس به بخش ثبت پست تایپها بروید. در فایل functions.php، جایی که پست تایپ projects یا مشابه آن تعریف شده است، باید مقدار ‘name’ و ‘slug’ مربوط به آن را تغییر دهید.
سلام وقتتتون بخیر برای اضافه کردن پست تایپ برای محصولات چه تغییراتی باید انجام داد؟؟
سلام درود بر شما
اگر ووکامرس نصب کرده باشید خودش یک پست تایپ می باشد
سلام من یه پست تایپ با جت انجین ساختم و میخام اون رو بزارم تو حساب کاربری کاربر بیاد مثلا آگهی یا اطلاعاتشو اونجا ثبت کنه یعنی توسط کاربران نگارش بشه اون پست تایپ و هرموقع خواست ببینه یا ویرایش کنه ممنون میشه کمک کنید .
سلام باید از قابلیت فرم در جت انجین استفاده نمایید
سلام خسته نباشید
من با CPT UI پست تایپ جدید خودم را ساختم حالا قصد دارم آرشیو مربوط به آن را با المنتور طراحی کنم ولی مشکلی وجود داره
من نمیتونم انتخاب کنم فقط نوشته های مربوط به این پست تایپ را آرشیو کند
سلام خدمت شما تیک آرشیو دارد را بزنید تا برای شما در شرط گذاری نمایش دهد .
سلام وقت بخیر برای پست تایپ های سفارشی شده افزونه جت انجین مناسب تر نیست؟
سلام درود بر شما
اگر با افزونه جت کار میکنید بهتره از پست تایپ خودش استفاده کنید اما فقط برای این موضوع خیر مناسب نیست
سلام
من پست تایپ پروژه ها رو اضافه کردم
ولی افزودن جدید نداره
فقط گزینه دسته ها و برچسب ها رو داره
چطور میتونم افزودن جدید رو هم اضافه کنم؟
سلام درود بر شما
یک جای کار را به درستی انجام نداده اید وگرنه مشکلی ندارند
سلام من پست تایپ جدید ساختم و کار میکنه میکنه اما وقتی یک نوشته جدید ایجاد میکنم و وارد اون نوشته میشم میگه برگه پیدا نشد میشه راهنمایی کنید
سلام لطفا از قسمت پیشخوان > تنظیمات > روی پیوند های یکتا کلیک کنید سپس بروزرسانی را بزنید و مجدد چک کنید
درود
پست تایپ رو از راههای مختلف میشه درست کرد با افزونه ها یا کد ، مسئله اصلی اینکه برگه sengel اختصاصی هر پست تایپ رو چطور تعریف کنیم که مشخص بشه اون برگه برای کدوم پست تایپ ، و بعد از ارسال محتوا در اون پست تایپ از استایل مورد نظر در اون برگه استفاده کنه
لطفا راهنمای دقیق داشته باشید
سلام وقت بخیر
زمانی که پست تایپ جدید درست می کنید در قسمت قالب های ذخیره شده نوع آن را که آرشیو و یا صفحه داخلی می باشد را از پست تایپ ایجاد شده انتخاب می کنید
/wp-content/themes/theme_name/functions.php همچین مسیری برای من نیست
بعد اینکه چجوری باید کد رو توش وارد کنیم ؟
سلام
theme_name نام پوشه قالب شما هستش .
ممنونم ولی کد رو چجوری وارد این فایل functions کنیم ؟
از قسمت پوسته ها در پیخوان روی ویرایش پرونده پوسته شوید و در آن قسمت ویرایش کنید
یادتان باشد روی قالب چایلد این کار را انجام دهید .