Wordpress Custom Page Type Kullanımı ve Metabox Ekleme
#Wordpress - 13 Oct 2020

Öncelikle merhabalar, Wordpress Custom Page Type Wordpress admin panelinize Yazılar, Ortam, Sayfalar gibi bir seçenek eklememize yardımcı olur. Tamamen kendimize göre ayarlayabileceğimiz gibi çoğu yerlerde işimizede yarayacaktır. Örneğin referanslar kısmını Custom Page Type ile yapabilirsiniz.

Custom Page Type Temaya Ekleme

Temamızın functions.php dosyasını açıyoruz, <?php etiketinin hemen altına aşağıda verdiğim kodları ekliyoruz.

function tayfun_custom_init() {
$labels = array(
'name' => _x( 'İsim', 'tayfun' ),
'singular_name' => _x( 'İsim', 'tayfun' ),
'add_new' => _x( 'İsim Ekle', 'tayfun' ),
'add_new_item' => _x( 'İsim tayfun Ekle', 'tayfun' ),
'edit_item' => _x( 'Düzenle', 'tayfun' ),
'new_item' => _x( 'Yeni İsim', 'tayfun' ),
'view_item' => _x( 'Görüntüle', 'tayfun' ),
'search_items' => _x( 'Ara', 'tayfun' ),
'not_found' => _x( 'Bulunamadı', 'tayfun' ),
'not_found_in_trash' => _x( 'Boşalt', 'tayfun' ),
'parent_item_colon' => _x( 'Parent tayfun:', 'tayfun' ),
'menu_name' => _x( 'İsim', 'tayfun' ),
'menu_name' => 'sim Detay'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'tayfun' ),
'capability_type' => 'page',
'has_archive' => true,
'hierarchical' => true,
'menu_position' =>4,
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes' ),
);
register_post_type( 'tayfun', $args );
}
add_action( 'init', 'tayfun_custom_init' );
//adding the meta box when the admin panel initialises
add_action("admin_init", "admin_init");
// this adds the save teaser function on save post
add_action('save_post', 'save_teaser');
function admin_init(){
add_meta_box('teaser_loop', 'Ayarlar', 'loop_meta', 'tayfun', 'normal', 'default');
}
// callback function of add meta box that displays the meta box in the post edit screen
function loop_meta($post, $args){
$soru = get_post_meta($post->ID, 'soru', true);
?>
<style>
.baslik {width:100%;font-weight:bold;font-size:15px}
textarea {border: 1px solid #CCCCCC;background-color: #FFFFFF;-webkit-border-radius: 10px;-moz-border-radius: 10px;width:100%;margin-top:5px;}
.textbox {border: 1px solid #CCCCCC;background-color: #FFFFFF;-webkit-border-radius: 10px;-moz-border-radius: 10px;width:100%;margin-top:5px;}
</style>
<div class="button realcuf baslik"><label>Gösterilmesi İstenilen Soru </label></div><div style="clear:both;"></div>
<input class="textbox" type="text" name="soru" value="<?php echo $soru; ?>" /><br/>
<?php
}
// saving the teaser
function save_teaser(){
global $post;
update_post_meta($post->ID, 'soru', $_POST['soru']);
}

Listeleme Yapma

Aşağıdaki kodları göstermek istediğiniz yere ekleyerek custom page type ile ayarladığımızı listeleyebiliriz.

<?php
$args=array(
'post_type' => 'tayfun',
'posts_per_page' => -1,
'services_rendered' => $client2
);
$loop = new WP_Query($args); ?>
<?php while ($loop->have_posts()) : $loop->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>

Özel Single Yapımı

Eğer temanın genel single şablonunu değil farklı şablon kullanmak istiyorsanız single-tayfun.php diye oluşturup kendi şablonunuzu ayarlayabilirsiniz.

Metabox İle Gösterme

Metabox ile göstermek için

<?php echo get_post_meta( get_the_ID(), 'soru', true ); ?>

göstermek istediğiniz yere eklemeniz yeterlidir.