<?php
/*
* Plugin Name: Wordpress Custom Post Type
* Description: 포스트 유형 추가 예제 플러그인
* Version: 1.0.0
* Author: HiSEON
* Author URI: https://hiseon.me/
*/
function create_my_story() {
register_post_type('my_stories',
array(
'labels' => array(
'name' => 'My Stories',
'singular_name' => 'My Story',
'add_new' => 'Add New',
'add_new_item' => 'Add New My Story',
'edit' => 'Edit',
'edit_item' => 'Edit My Story',
'new_item' => 'New My Story',
'view' => 'View',
'view_item' => 'View My Story',
'search_items' => 'Search My Stories',
'not_found' => 'No My Stories found',
'not_found_in_trash' => 'No My Stories found in Trash',
'parent' => 'Parent My Story'
),
'public' => true,
'menu_position' => 15,
'supports' => array('title', 'editor'),
/* 'supports' => array('title', 'editor', 'comments', 'thumbnail', 'custom-fields'), */
'taxonomies' => array(''),
'menu_icon' => 'dashicons-smiley',
'has_archive' => true
)
);
}
add_action('init', 'create_my_story');
function my_admin() {
add_meta_box('my_story_meta_box',
'My Story Details',
'display_my_story_meta_box',
'my_stories', 'normal', 'high'
);
}
add_action('admin_init', 'my_admin');
function display_my_story_meta_box($my_story) {
$story_memo = esc_html(get_post_meta($my_story->ID, 'story_memo', true));
$story_rating = intval(get_post_meta($my_story->ID, 'story_rating', true));
?>
<table>
<tr>
<td style="width: 100%">Story Memo</td>
<td><input type="text" size="80" name="my_story_memo" value="<?php echo $story_memo; ?>" /></td>
</tr>
<tr>
<td style="width: 150px">Story Rating</td>
<td>
<select style="width: 100px" name="my_story_rating">
<?php for ($rating = 5; $rating >= 1; $rating --) { ?>
<option value="<?php echo $rating; ?>" <?php echo selected($rating, $story_rating); ?>>
<?php echo $rating; ?> stars
</option>
<?php } ?>
</select>
</td>
</tr>
</table>
<?php
}
add_action('save_post', 'add_my_story_fields', 10, 2);
function add_my_story_fields($my_story_id, $my_story) {
if ($my_story->post_type == 'my_stories') {
if (isset($_POST['my_story_memo']) && $_POST['my_story_memo'] != '') {
update_post_meta($my_story_id, 'story_memo', $_POST['my_story_memo']);
}
if (isset($_POST['my_story_rating']) && $_POST['my_story_rating'] != '') {
update_post_meta($my_story_id, 'story_rating', $_POST['my_story_rating']);
}
}
}
/*
* 주의) 아래의 템플릿이 인식되지 않거나, get_post_type() 이 빈칸으로 나올 경우
* 다른 테마로 활성화 한 다음. 다시 기존 테마로 활성화 하면 됨.
*/
function include_template_function($template_path) {
if (get_post_type() == 'my_stories') {
if (is_single()) {
if ($theme_file = locate_template(array ('single-my_stories.php'))) {
$template_path = $theme_file;
} else {
$template_path = plugin_dir_path(__FILE__) . '/single-my_stories.php';
}
}
}
return $template_path;
}
add_filter('template_include', 'include_template_function', 1);
?>