WordPress’te Post type oluşturmadan önce post type’ın ne olduğunu anlamamız gerekiyor. Öncelikle WordPress sitenizdeki içerikleriniz mysql veritabanınızın wp_posts tablosunda tutulur.
Aşağıda göreceğiniz gibi wp_posts tablosundaki post_type sütunununda içeriğin tipi belirtiliyor, WordPress’te içeriğin post_type değerine bakarak bunun yazı, sayfa, medya veya özel alan(post, page, attachment gibi) olduğuna bakarak sitede ve admin panelde gerekli işlemleri yaptırıyor.
WordPress’teki içerik işlemleri için post type oldukça önemlidir. WordPress’in dökümanından detaylı olarak inceleyebilirsiniz. https://wordpress.org/support/article/post-types/
Mevcut sitenizin admin panelinde yeni bir menü açmak ve içerik girişi yapmak içinde size özel post type oluşturabilirsiniz. Bunun için temanızın functions.php dosyasına aşağıdaki php kodunu kendinize göre düzenleyerek eklemeniz gerekiyor.
function custom_post_type_filmler() { $supports = array( 'title', // post title 'editor', // post content 'author', // post author 'thumbnail', // featured images 'excerpt', // post excerpt 'custom-fields', // custom fields 'comments', // post comments 'revisions', // post revisions 'post-formats', // post formats ); $labels = array( 'name' => _x('Filmler', 'plural'), 'singular_name' => _x('Filmler', 'singular'), 'menu_name' => _x('Filmler', 'admin menu'), 'name_admin_bar' => _x('Filmler', 'admin bar'), 'add_new' => _x('Yeni Film Ekle', 'add new'), 'add_new_item' => __('Yeni Film Ekle'), 'new_item' => __('Yeni Filmler'), 'edit_item' => __('Filmi Düzenle'), 'view_item' => __('Filmleri Göster'), 'all_items' => __('Tüm Filmler'), 'search_items' => __('Filmlerde Ara'), 'not_found' => __('Film Bulunamadı.'), ); $args = array( 'supports' => $supports, 'labels' => $labels, 'public' => true, 'query_var' => true, 'rewrite' => array('slug' => 'filmler'), 'has_archive' => true, 'hierarchical' => false, ); register_post_type('filmler', $args); } add_action('init', 'custom_post_type_filmler');
Kodu ekledikten sonra admin panelinde aşağısdaki gibi Filmler menüsü geliyor.
Buraya eklediğiniz içeriklerinizi ise aşağıdaki aşağıdaki kod ile temanızda içeriği listeleyeceğiniz alana eklemeniz gerekiyor.
<?php $loop = new WP_Query( array( 'post_type' => 'filmler' ) ); ?> <?php while ( $loop->have_posts() ) : $loop->the_post(); ?> <div class="pindex"> <div class="pimage"> <a href="<?php the_permalink(); ?>"><?php if ( has_post_thumbnail() ) {the_post_thumbnail();} ?></a> </div> <div class="ptitle"> <h2><?php echo get_the_title(); ?></h2> </div> </div> <?php endwhile; wp_reset_query(); ?>
Özel post type oluşturma işlemi bu kadar. Takıldığınız yerleri yorum olarak iletebilirsiniz.
Kürşad
Listeleme kodunu nereye eklememiz gerekiyor. Kodda yer alan /filmler slug’ına uygun olarak örnek verebilir misiniz?
Siteadi.com/filmler sayfasına girildiğinde listeleme olmasını istiyorum. Php kodunu nereye eklemeliyiz?
Okan Taştan
Tema dizininde page-filmler.php dosyası oluşturun. En üste /* Template Name: Filmler Şablonu*/ ekleyin ve altınada listeleme kodunu ekleyin. Daha sonra yeni sayfa ekleyip şablonunu Filmler Şablonu olarak seçin.
Sefa
Hocam yazı için teşekkürler. Hali hazırda metabox kodlarım var bunu bu sayfada nasıl görüntüleyebilirim normal wordpress yazı sayfasında gözükmekte ancak özel yazı türünde gözükmemekte.