WordPress 里面内置了两种常用的 Post Type :Post(文章)、Page(页面),分别用来展示两种类型的内容,一种是相对动态的文章,另一种是相对固定的页面。 除此之外,WordPress 还内置了其他几种 Post Type 用来展示不同类型的内容。但如果是一个比较复杂的网站或者需求自定义程度比较高,这时候就可以手动自己创建一个 Post Type 来展示某类信息。
1 //注册自定义文章类型-event 2 add_action( 'init', 'my_custom_post_event' ); 3 function my_custom_post_event() { 4 $labels = array( 5 'name' => _x( '大事记', 'post type 名称' ), 6 'singular_name' => _x( 'event', 'post type 单个 item 时的名称,因为英文有复数' ), 7 'add_new' => _x( '新建大事记', '添加新内容的链接名称' ), 8 'add_new_item' => __( '新建一个大事记' ), 9 'edit_item' => __( '编辑大事记' ), 10 'new_item' => __( '新大事记' ), 11 'all_items' => __( '所有大事记' ), 12 'view_item' => __( '查看大事记' ), 13 'search_items' => __( '搜索大事记' ), 14 'not_found' => __( '没有找到有关大事记' ), 15 'not_found_in_trash' => __( '回收站里面没有相关大事记' ), 16 'parent_item_colon' => '', 17 'menu_name' => '大事记' 18 ); 19 $args = array( 20 'labels' => $labels, 21 'description' => '我们网站的大事记信息', 22 'public' => true, 23 'menu_position' => 5, 24 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments'), 25 'has_archive' => true 26 ); 27 register_post_type( 'event', $args ); 28 } 29 30 //注册自定义文章类型-添加分类 31 function my_taxonomies_event() { 32 $labels = array( 33 'name' => _x( '大事记分类', 'taxonomy 名称' ), 34 'singular_name' => _x( '大事记分类', 'taxonomy 单数名称' ), 35 'search_items' => __( '搜索大事记分类' ), 36 'all_items' => __( '所有大事记分类' ), 37 'parent_item' => __( '该大事记分类的上级分类' ), 38 'parent_item_colon' => __( '该大事记分类的上级分类:' ), 39 'edit_item' => __( '编辑大事记分类' ), 40 'update_item' => __( '更新大事记分类' ), 41 'add_new_item' => __( '添加新的大事记分类' ), 42 'new_item_name' => __( '新大事记分类' ), 43 'menu_name' => __( '大事记分类' ), 44 ); 45 $args = array( 46 'labels' => $labels, 47 'hierarchical' => true, 48 'show_ui' => true, 49 'show_in_menu' => true, 50 'show_in_nav_menus' => true 51 ); 52 register_taxonomy( 'event_category', 'event', $args ); 53 } 54 add_action( 'init', 'my_taxonomies_event', 0 ); 55 56 57 //注册自定义文章类型-添加标签 58 add_action( 'init', 'create_event_taxonomies', 0 ); 59 function create_event_taxonomies() { 60 $labels = array( 61 'name' => '大事记标签', 'taxonomy general name', 62 'singular_name' => '大事记标签', 'taxonomy singular name', 63 'search_items' => '搜索大事记标签', 64 'all_items' => '所有大事记标签', 65 'parent_item' => 'Parent Genre', 66 'parent_item_colon' => 'Parent Genre:', 67 'edit_item' => '编辑大事记标签', 68 'update_item' => '更新大事记标签', 69 'add_new_item' => '添加新大事记标签', 70 'new_item_name' => 'New Genre Name', 71 'menu_name' => '大事记标签', 72 ); 73 $args = array( 74 'hierarchical' => false, 75 'labels' => $labels, 76 'show_ui' => true, 77 'show_admin_column' => true, 78 'query_var' => true, 79 // 'rewrite' => array( 'slug' => event ), 80 ); 81 register_taxonomy( 'event_tag', 'event', $args ); 82 } 83 84 //添加自定义文章类型相关字段 85 add_action('add_meta_boxes', 'event_time');//活动时间 86 add_action('add_meta_boxes', 'event_name');//活动结果 87 add_action('add_meta_boxes', 'event_link');//事件链接 88 89 90 function event_time() { 91 add_meta_box('event_time','活动时间', 'event_time_meta_box', 'event', 'normal', 'high'); 92 } 93 94 function event_name() { 95 add_meta_box('event_name','事件结果', 'event_name_meta_box', 'event', 'normal', 'high'); 96 } 97 98 function event_link() { 99 add_meta_box('event_link','事件链接', 'event_link_meta_box', 'event', 'normal', 'high'); 100 } 101 102 103 104 //定义字段输入框 105 function event_time_meta_box($post) { 106 wp_nonce_field('event_time_meta_box', 'event_time_meta_box_nonce'); 107 $value = get_post_meta($post->ID, 'event_time', true); 108 echo '<label for="event_time"></label>'; 109 echo '<input type="text" id="event_time" name="event_time" value="'.$value.'" size="50" />'; 110 } 111 112 function event_name_meta_box($post) { 113 wp_nonce_field('event_name_meta_box', 'event_name_meta_box_nonce'); 114 $value = get_post_meta($post->ID, 'event_name', true); 115 echo '<label for="event_name"></label>'; 116 echo '<input type="text" id="event_name" name="event_name" value="'.$value.'" size="50" />'; 117 } 118 119 function event_link_meta_box($post) { 120 wp_nonce_field('event_link_meta_box', 'event_link_meta_box_nonce'); 121 $value = get_post_meta($post->ID, 'event_link', true); 122 echo '<label for="event_link"></label>'; 123 echo '<input type="text" id="event_link" name="event_link" value="'.$value.'" size="50" />'; 124 } 125 126 // function event_link_meta_box($post) { 127 // wp_nonce_field('event_link_meta_box', 'event_link_meta_box_nonce'); 128 // echo '<input type="hidden" name="event_link" id="event_link" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; 129 // echo wp_editor(get_post_meta($post->ID, "content_link", true), "content_link", $settings = array('wpautop' => true,'media_buttons'=>false) ); 130 // } 131 132 add_action( 'save_post', 'event_time_save_meta_box' ); 133 add_action( 'save_post', 'event_name_save_meta_box' ); 134 add_action( 'save_post', 'event_link_save_meta_box' ); 135 136 137 //数据提交检查 138 function event_time_save_meta_box($post_id){ 139 // 安全检查 140 // 检查是否发送了一次性隐藏表单内容(判断是否为第三者模拟提交) 141 if ( ! isset( $_POST['event_time_meta_box_nonce'] ) ) {return;} 142 // 判断隐藏表单的值与之前是否相同 143 if ( ! wp_verify_nonce( $_POST['event_time_meta_box_nonce'], 'event_time_meta_box' ) ) {return;} 144 145 // 判断该用户是否有权限 146 if ( ! current_user_can( 'edit_post', $post_id ) ) {return;} 147 148 // 判断 Meta Box 是否为空 149 if ( ! isset( $_POST['event_time'] ) ) {return;} 150 151 $event_time = sanitize_text_field( $_POST['event_time'] ); 152 update_post_meta( $post_id, 'event_time', $event_time ); 153 } 154 155 function event_name_save_meta_box($post_id){ 156 // 安全检查 157 // 检查是否发送了一次性隐藏表单内容(判断是否为第三者模拟提交) 158 if ( ! isset( $_POST['event_name_meta_box_nonce'] ) ) {return;} 159 // 判断隐藏表单的值与之前是否相同 160 if ( ! wp_verify_nonce( $_POST['event_name_meta_box_nonce'], 'event_name_meta_box' ) ) {return;} 161 162 // 判断该用户是否有权限 163 if ( ! current_user_can( 'edit_post', $post_id ) ) {return;} 164 165 // 判断 Meta Box 是否为空 166 if ( ! isset( $_POST['event_name'] ) ) {return;} 167 168 $event_name = sanitize_text_field( $_POST['event_name'] ); 169 update_post_meta( $post_id, 'event_name', $event_name ); 170 } 171 172 function event_link_save_meta_box($post_id){ 173 // 安全检查 174 // 检查是否发送了一次性隐藏表单内容(判断是否为第三者模拟提交) 175 if ( ! isset( $_POST['event_link_meta_box_nonce'] ) ) {return;} 176 // 判断隐藏表单的值与之前是否相同 177 if ( ! wp_verify_nonce( $_POST['event_link_meta_box_nonce'], 'event_link_meta_box' ) ) {return;} 178 179 // 判断该用户是否有权限 180 if ( ! current_user_can( 'edit_post', $post_id ) ) {return;} 181 182 // 判断 Meta Box 是否为空 183 if ( ! isset( $_POST['event_link'] ) ) {return;} 184 185 $event_link = $_POST['content_link']; 186 update_post_meta( $post_id, 'content_link', $event_link ); 187 188 } 189 190 //在列表显示字段及参数 191 add_action("manage_posts_custom_column", "event_custom_columns"); 192 add_filter("manage_edit-event_columns", "event_edit_columns"); 193 function event_custom_columns($column){ 194 global $post; 195 switch ($column) { 196 case "event_time": 197 echo get_post_meta($post->ID, 'event_time', true); 198 break; 199 case "event_name": 200 echo get_post_meta($post->ID, 'event_name', true); 201 break; 202 case "event_link": 203 echo get_post_meta($post->ID, 'event_link', true); 204 } 205 } 206 //列表显示字段title 207 function event_edit_columns($columns){ 208 $columns['event_time'] = '活动时间'; 209 $columns['event_name'] = '活动结果'; 210 $columns['event_link'] = '活动链接'; 211 return $columns; 212 }
标签:box,name,自定义,大事记,meta,WordPress,文章,post,event From: https://www.cnblogs.com/ixiaowangzi/p/16770304.html