آموزش ساخت پست تایپ سفارشی در وردپرس

آموزش ساخت پست تایپ سفارشی در وردپرس

آموزش ساخت پست تایپ سفارشی در وردپرس

امروز قصد داریم ساخت و ایجاد پست تایپ سفارشی را بدون نیاز به افزونه در پرند وب سایت آموزش دهیم.

اگر بر روی وبسایت مشتری کار می‌کنید و نمی‌خواهید افزونه‌ای نصب کنید، در اینصورت می‌توانید پست تایپ اختصاصی خود را با افزودن کد زیر در فایل functions.php پوسته خود، ایجاد کنید.

ابتدا ما یک مثال کامل و سریع میزنیم تا متوجه شوید که این روش چگونه کار می‌کند. بیایید تا به این کد نگاهی بیاندازیم :


// Our custom post type function
function create_posttype() {

register_post_type( 'movies',
// CPT Options
array(
'labels' => array(
'name' => __( 'Movies' ),
'singular_name' => __( 'Movie' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'movies'),
)
);
}
// Hooking up our function to theme setup
add_action( 'init', 'create_posttype' );

کاری که این کد انجام می‌دهد این است که یک پست تایپ به اسم movies را به همراه یک آرایه‌ای از argument ها ثبت می‌کند. این argument ها درواقع گزینه‌های مورد استفاده در پست تایپ هستند. این آرایه دو بخش دارد، بخش اول لیبل‌ها هستند که خودشان نیز آرایه هستند. بخش دوم که دیگر arguments ها هستند شامل نمایش یا همان visibility، آرشیو بودن پست یا همان has archive و slug است که در url های این پست‌ تایپ‌ها استفاده خواهد شد.

حال بیایید به جزئیات این کد نگاهی بیاندازیم که چه گزینه‌هایی را به پست تایپ شما می‌افزاید :


/*
* Creating a function to create our CPT
*/

function custom_post_type() {

// Set UI labels for Custom Post Type
$labels = array(
'name' => _x( 'Movies', 'Post Type General Name', 'twentythirteen' ),
'singular_name' => _x( 'Movie', 'Post Type Singular Name', 'twentythirteen' ),
'menu_name' => __( 'Movies', 'twentythirteen' ),
'parent_item_colon' => __( 'Parent Movie', 'twentythirteen' ),
'all_items' => __( 'All Movies', 'twentythirteen' ),
'view_item' => __( 'View Movie', 'twentythirteen' ),
'add_new_item' => __( 'Add New Movie', 'twentythirteen' ),
'add_new' => __( 'Add New', 'twentythirteen' ),
'edit_item' => __( 'Edit Movie', 'twentythirteen' ),
'update_item' => __( 'Update Movie', 'twentythirteen' ),
'search_items' => __( 'Search Movie', 'twentythirteen' ),
'not_found' => __( 'Not Found', 'twentythirteen' ),
'not_found_in_trash' => __( 'Not found in Trash', 'twentythirteen' ),
);

// Set other options for Custom Post Type

$args = array(
'label' => __( 'movies', 'twentythirteen' ),
'description' => __( 'Movie news and reviews', 'twentythirteen' ),
'labels' => $labels,
// Features this CPT supports in Post Editor
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
// You can associate this CPT with a taxonomy or custom taxonomy.
'taxonomies' => array( 'genres' ),
/* A hierarchical CPT is like Pages and can have
* Parent and child items. A non-hierarchical CPT
* is like Posts.
*/
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
);

// Registering your Custom Post Type
register_post_type( 'movies', $args );

}

/* Hook into the 'init' action so that the function
* Containing our post type registration is not
* unnecessarily executed.
*/

add_action( 'init', 'custom_post_type', 0 );

همانطور که می‌بینید، این کد گزینه‌های زیادی را به پست تایپ خالی اضافی می‌کند. ویژگی‌هایی مانند پشتیبانی از نقد، عکس اختصاصی، فیلد‌های شخصی سازی شده و غیره.

در این پست تایپ، یک taxonomy به نام genres نیز وجود دارد. همچنین به قسمتی که در آن مقدار hierarchical را false قرار داده شده است توجه کنید. اگر می‌خواهید که پست تایپ شما دسته‌ بندی به شکل برگه‌ها داشته باشد، می‌توانید این مقدار را به true تغییر دهید.

همچنین به استفاده مداوم از twentythirteen نیز توجه کنید، به آن text domain می‌گوییم. اگر پوسته شما به صورت پیشفرض ترجمه شده باشد و بخواهید پست تایپ شما نیز ترجمه شود، باید text domain استفاده شده در پوسته خود را پیدا کنید. برای پیدا کردن text domain می‌توانید داخل فایل style.css را در دایرکتوری پوسته خود ببینید. Text domain در قسمت هدر این فایل قرار گرفته است.

 

نمایش پست تایپ های سفارشی در وبسایت

وردپرس به صورت پیشفرض، قابلیت نمایش پست تایپ‌های اختصاصی شما را دارد. زمانی که تعدادی از این پست‌ تایپ‌ها را بصورت نمونه ایجاد کردید، می‌توانید برای نمایش آن اقدام کنید.

چند روش برای نمایش پست تایپ‌ها وجود دارد که می‌توانید از آنها استفاده کنید و البته هرکدام از آنها، فایده خاص خود را دارد.
نمایش پست تایپ های سفارشی با استفاده از قالب پیشفرض آرشیو

ابتدا به صفحه‌ی نمایش >> فهرست‌ها رفته و یک لینک به منو‌ی خود اضافه کنید. این لینک، درواقع لینکی به پست‌ تایپ‌ اختصاصی شما خواهد بود. احتمالا لینک به پست‌ تایپ‌های اختصاصی شما به یکی از این دو صورت خواهد بود.

– http://example.com/movies

– http://example.com?post_type=movies

بعد از ذخیره کردن پیوند یا همان لینک در فهرست اصلی خود، به وبسایت خود رفته و برروی لینک کلیک کنید، در این مرحله، شما باید به صفحه‌ی آرشیوی از پست‌ تایپ‌های اختصاصی خود هدایت شوید. برای تغییر ظاهر این صفحه نیز می‌توانید قالب مربوط به فایل archive.php را در پوسته خود تغییر دهید.

 

استفاده از قالب برای صفحه آرشیو و پست‌های تکی برای پست تایپ های سفارشی

اگر از ظاهر صفحه‌ی آرشیو برای پست‌ تایپ‌های خود راضی نیستید، می‌توانید از تمپلیت‌های اختصاصی برای نمایش آنها استفاده کنید. برای اینکار کافیست که یک فایل به اسم archive-movies.php در دایرکتوری پوسته خود بسازید. واژه movies را با نام پست تایپی که ساخته‌اید، جایگزین کنید.

برای شروع، می‌توانید محتوای فایل archive.php را کپی کرده و داخل فایل archive-movies.php قرار دهید و سپس کدهای این فایل را با توجه به نیاز و سلیقه خود، تغییر دهید. حالا هر موقع که صفحه‌ی آرشیو برای پست تایپ‌های شما درخواست می‌شود، این صفحه نمایش داده خواهد شد.

به همین ترتیب، می‌توانید تمپلیت اختصاصی خود را برای نمایش صفحه‌های مربوط به پست تایپ‌ها انجام دهید. برای اینکار نیز ابتدا یک فایل به اسم single-movies.php در دایرکتوری پوسته خود بسازید. البته باز هم تاکید می‌کنم که تغییر کلمه movies را به نام پست تایپ خود، فراموش نکنید.

برای این فایل نیز ابتدا می‌توانید محتویات درون فایل single.php را داخل فایل single-movies.php قرار دهید و آن را با توجه به سلیقه خود ویرایش نمایید.

 

نمایش پست تایپ‌های اختصاصی در صفحه اصلی

یکی از مزیت‌های پست‌ تایپ‌های اختصاصی این است که آنها از نوشته‌های اصلی شما جدا خواهند بود. با این حال اگر دوست دارید که آنها در بین نوشته‌های عادی شما و در صفحه‌ی اصلی نمایش داده شوند، می‌توانید به راحتی، کد زیر را در فایل functions.php پوسته‌ی خود اضافه نمایید.


add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'movies' ) );
return $query;
}

کوئری پست تایپ‌ها

اگر با کد زدن به زبان php آشنا هستید و می‌خواهید کوئری‌هایی در تمپلیت‌های خود بگیرید، می‌توانید از کد زیر استفاده نمایید. با کوئری گرفتن از پایگاه داده، شما قادر خواهید بود، پست تایپ‌ها را هرطور که دوست دارید بر اساس فیلترهای مورد نظرتان، نمایش دهید.

<pre class="lang:php decode:true "><?php 
$args = array( 'post_type' => 'movies', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args ); 
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?> 
</div>
<?php wp_reset_postdata(); ?>
<?php else:  ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

در این کد، ما ابتدا پست تایپ و سپس تعداد هر پست را در صفحه define می‌کنیم. سپس کوئری فراخوانی می‌کنیم و پست‌ها را در داخل حلقه نمایش می‌دهیم.

 

نمایش پست تایپ‌ها در ابزارک‌ها

همانطور که تا به حال دیده‌اید، در وردپرس بصورت پیشفرض، ابزارک‌هایی از جمله نمایش نوشته‌های اخیر وجود دارد. اما این ابزارک‌ها به شما اجازه نمایش پست‌ تایپ‌ها را نمی‌دهد. خوب اگر بخواهیم این پست‌ تایپ‌ها را براساس جدیدترین‌ها نمایش بدهیم، چه کار باید بکنیم؟ یک راه حل ساده برای اینکار وجود دارد.

اولین کاری که باید انجام دهید، نصب و فعالسازی افزونه Ultimate Post Widget است. بعد از فعالسازی، به صفحه‌ی نمایش >> ابزارک‌ها رفته و ابزارک Ultimate Post را به نوارکناری و یا همان سایدبار خود اضافه کنید.

این ابزارک قدرتمند به شما اجازه خواهد داد تا تمام پست‌ها را بدون توجه به نوع آن، نمایش دهید. به علاوه می‌توانید ابتدای پست را به همراه لینک بیشتر بخوانید را در کنار عکس آن و عنوان پست نمایش دهید. ابزارک را با توجه به سلیقه خود و نوع پست‌هایی که قصد نمایش آن را دارید، تنظیم کنید. سپس تغییرات را ذخیره کرده و نتیجه را در وبسایت خود ببینید.

 

ترفند‌های دیگر در پست تایپ‌های اختصاصی

کارهای بسیار زیادی را می‌توان برروی پست‌ تایپ‌ها انجام داد. می‌توانید آنها را در RSS خود نمایش دهید و یا براساس فید آنها را دسته بندی کنید. همچنین اگر از سیستم نظردهی Disqus استفاده می‌کنید، می‌توانید تنظیمات مربوط به آن را در وردپرس انجام دهید.

 

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

.:: منتظرتان هستیم ::.

پشتیبانی ما همه روزه در خدمت شماست!

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