首页 > 其他分享 >WordPress自定义文章类型

WordPress自定义文章类型

时间:2022-10-08 21:46:31浏览次数:58  
标签:box name 自定义 大事记 meta WordPress 文章 post event

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

相关文章