اغلب افراد به اشتباه وردپرس را فقط یک پلت فرم وبلاگ نویسی طبقه بندی میکنند. در طول سالهای گذشته، وردپرس به یک سیستم مدیریت محتوا تبدیل شده است. به طور پیش فرض وردپرس با پست و صفحات به عنوان انواع محتوای اصلی همراه است. با این وجود شما میتوانید پست تایپهای سفارشی را به صورت دلخواه ایجاد کنید. در این مقاله، ما به شما نحوه ایجاد پست تایپهای سفارشی در وردپرس را نشان خواهیم داد.
- پست تایپ سفارشی در WordPress چیست؟
پست تایپهای سفارشی انواع محتوایی مانند پستها و صفحات هستند. از آنجایی که وردپرس از یک پلت فرم ساده وبلاگ نویسی به یک سیستم مدیریت محتوا قوی خلق شده است، اصطلاح پست به آن افزوده شده است. با این حال، نوع پست میتواند هر نوع محتوایی باشد. به طور پیش فرض، وردپرس با این نوع پستها همراه است:
- Post
- Page
- Attachment
- Revision
- Nav Menu
شما میتوانید پست تایپهای سفارشی خود را ایجاد کرده و آنها را در هرجایی که میخواهید استفاده کنید. به عنوان مثال ما برای سرویسها و راهکارهای لابراتوآرسانه از پست تایپهای سفارشی استفاده کردیم که هرکدام دستهبندی سفارشی خود را دارند.
- ایجاد پست سفارشی با استفاده از پلاگین
سادهترین راه ایجاد پست تایپ سفارشی در WordPress با استفاده از یک افزونه است. این روش برای مبتدیها توصیه میشود زیرا امنیت دارد و فوقالعاده آسان است. اما با پاک کردن و یا غیر فعال کردن افزونه، پست تایپ سفارشی هم پاک میشود.
- ایجاد پست تایپ سفارشی به صورت دستی
برای ایجاد یک پست تایپ ابتدا کد زیر را در فایل functions.php اضافه نمایید.
با اضافه کردن پست تایپ سفارشی ممکن است وردپرس دچار cashe شود و خطای ۴۰۴ را نمایش دهد که تکه کد زیر را در ادامه کدهای پست تایپ گذاشته تا از آن جلوگیری کنید.
flush_rewrite_rules( false );
بخش اول تکه کد بالا لیبلها هستند که خودشان نیز آرایه هستند. بخش دوم که دیگر arguments ها هستند شامل آرشیو بودن پست یا همان has archive و slug است که در url های این پست تایپها استفاده خواهد شد.
اگر میخواهید که پست تایپ شما دستهبندی به شکل برگهها داشته باشد، hierarchical را که دارای مقدار false است را را به true تغییر دهید.
بعد از ساختن پست تایپ سفارشی به صورت پیش فرض وردپرس url پست تایپ سفارشی /blog/post-type میباشد که اگر مقدار ‘with_front’ را برابر false قرار دهیم blog را برداشته و مقداری را که برای slug در نظر گرفتهایم را نشان میدهد که برای این پست تایپ /services است.
‘rewrite’ => array( ‘slug’ => ‘services’, ‘with_front’ => false ),
- Support
برای فراخوانی مستقیم تابع add_post_type_support() استفاده میشود که مقادیر آن به صورت پیشفرض title and editor هستند اما میتواند مقادیر زیر را هم بگیرد.
‘title’ , ‘editor’ , ‘author’ , ‘thumbnail’ , ‘excerpt’ , ‘trackbacks’ , ‘custom-fields’ , ‘comments’ , ‘revisions’ , ‘page-attributes’ , ‘post-formats’
- has_archive
بایگانی پست تایپ را مشخص میکند که به صورت پیشفرض از بایگانی خود slug استفاده میکند.
استفاده از قالب برای صفحه آرشیو برای پست تایپهای سفارشی
اگر از ظاهر صفحهی آرشیو برای پست تایپهای خود راضی نیستید، میتوانید از تمپلیتهای اختصاصی برای نمایش آنها استفاده کنید. برای این کار کافیست که یک فایل به اسم archive-services.php در دایرکتوری theme خود بسازید. به جای services نام پست تایپی که ساختهاید را جایگزین کنید.
میخوای یه فروشگاه به وسعت اینترنت داشته باشی؟
ما حرفهایترین فروشگاه آنلاین رو برات طراحی میکنیم.
برای شروع، میتوانید محتوای فایل archive.php را کپی کرده و داخل فایل archive-services.php قرار دهید و سپس کدهای این فایل را با توجه به نیاز و سلیقه خود، تغییر دهید. حالا هر موقع که صفحهی آرشیو برای پست تایپهای شما درخواست میشود، این صفحه نمایش داده خواهد شد.
که من برای نمایش آرشیو پست تایپ سرویسها تکه کد زیر را قرار دادم:
با استفاده ازتک کد زیر، ما ابتدا پست تایپ و سپس تعداد هر پست را در صفحه تعیین می کنیم که در اینجا ۶ تا پست را نشان میدهد. سپس کوئری فراخوانی میکنیم و پستها را در داخل حلقه نمایش میدهیم.
$my_query = array(‘post_type’ => ‘services’,’posts_per_page’ => 6);
$query1 = new WP_Query($my_query);
while($query1->have_posts()) : $query1->the_post();
به همین ترتیب، میتوانید تمپلیت اختصاصی خود را برای نمایش صفحههای مربوط به پست تایپها را بسازید. برای اینکار نیز ابتدا یک فایل به اسم single-services.php در دایرکتوری پوسته خود بسازید. البته باز هم تاکید میکنم که تغییر کلمه services را به نام پست تایپ خود، فراموش نکنید.
برای این فایل نیز ابتدا میتوانید محتویات درون فایل single.php را داخل فایل single-services.php قرار دهید و آن را با توجه به سلیقه خود ویرایش نمایید که من به صورت زیر پیاده سازی کردم:
get_template_part( ‘content’, get_post_format() );
با تکه کد بالا محتوای پست تایپ سفارشی را نمایش میدهیم.
همانطور که در عکس بالا مشاهده میکنید پست تایپ سفارشی ساخته شد و تمامی قابلیتهای پست تایپها را دارد
- اضافه کردن دسته بندی به پست تایپ سفارشی
برای اضافه کردن دستهبندی مختص خود پست تایپ به پست تایپ سفارشی از تک کد زیر میتوان استفاده کرد
- اضافه کردن برچسب(tag) به پست تایپ سفارشی
و همچنین برای اضافه کردن برچسب (tag)به پست تایپ از کد زیر استفاده میکنیم
تنها نکته اضافه کردن برچسب این است که مقدار ‘singular_name’ باید با مقدار slug در تکه کد زیر برابر باشد و در هر پست تایپ مختص به آن باشد
'rewrite' => array( 'slug' => 'services_tag' ),