wordpress代码创建自定义类型

本文由清尘发表于2019-01-12 23:55最后修改于2019-04-25属于WordPress分类

在主题的functions.php里创建电影自定义类型:

<?php

/**
 * 自定义内容类型-电影
 */

function movietalk_custom_post_type_movie(){
  $labels = array(
    'name'               => '电影',
    'singular_name'      => '电影',
    'add_new'            => '添加电影',
    'add_new_item'       => '添加电影资料',
    'edit_item'          => '编辑电影资料',
    'new_item'           => '新电影',
    'all_items'          => '所有电影',
    'view_item'          => '查看电影',
    'search_items'       => '搜索电影',
    'not_found'          => '没找到电影资料',
    'not_found_in_trash' => '回收站里没找到电影资料', 
    'menu_name'          => '电影'
  );
  $args = array(
    'public'        => true,
    'labels'        => $labels,
    'menu_position' =>5,
    'supports'      =>array('title','editor','thumbnail','excerpt','custom-fields','revisions'),
    'has_archive'   =>true,
    'rewrite'       =>array('slug' => 'film','with_front' => false),
  );
  register_post_type('movie',$args);
 }

 add_action('init','movietalk_custom_post_type_movie');


 /*
 * 自定义内容类型的内容更新信息 - 电影
 */
function movietalk_movie_updated_messages( $messages ) {
  global $post, $post_ID;

  $messages['movie'] = array(
    0 => '', // 没有用,信息从索引 1 开始。
    1 => sprintf( __('电影已更新,<a href="%s">点击查看</a>', 'movietalk'), esc_url( get_permalink($post_ID) ) ),
    2 => __('自定义字段已更新。', 'movietalk'),
    3 => __('自定义字段已删除。', 'movietalk'),
    4 => __('电影已更新。', 'movietalk'),
    // translators: %s: 修订版本的日期与时间 
    5 => isset($_GET['revision']) ? sprintf( __('电影恢复到了 %s 这个修订版本。', 'movietalk'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('电影已发布,<a href="%s">点击查看</a>', 'movietalk'), esc_url( get_permalink($post_ID) ) ),
    7 => __('电影已保存', 'movietalk'),
    8 => sprintf( __('电影已提交, <a target="_blank" href="%s">点击预览</a>', 'movietalk'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('电影发布于:<strong>%1$s</strong>, <a target="_blank" href="%2$s">点击预览</a>', 'movietalk'),
      // translators: 发布选项日期格式,查看 http://php.net/date
      date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('电影草稿已更新,<a target="_blank" href="%s">点击预览</a>', 'movietalk'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );

  return $messages;
}
add_filter( 'post_updated_messages', 'movietalk_movie_updated_messages' );

使用页面模板来显示自定义内容列表

在主题目录下新建一个页面模板page-movie.php

<?php
/**
 * Template Name:电影页面
 * 
 */
 ?>

 <div id="primary" class="site-content">
   <div id="content">
     <?php query_posts('post_type=movie'); ?>
     <?php while (have_posts()):the_post(); ?>
        <h1><?php the_title(); ?></h1>
        <h1><?php the_content(); ?></h1>
     <?php endwhile; ?>
   </div>
 </div>

在wordpress后台新建一个页面,选择刚刚创建的页面模板,保存。可以看到文章列表