
一、后台新建文章类型
目的和意义
新建文章类型以实现独立内容板块和自定义样式;避免在首页显示新建板块的文章内容。
调用函数:register_post_type( string $post_type, array|string $args = array() )
编辑主题目录下functions.php文件,加入如下代码:
//给网站添加说说功能 function my_custom_post_nonsense() { $labels = array( 'name' => _x( '说说', 'post type 名称' ), 'singular_name' => _x( '说说', 'Post Type 单个 Item 时的名称' ), 'add_new' => _x( '新建说说', '添加新内容的链接名称' ), 'add_new_item' => __( '新建一个说说' ), 'edit_item' => __( '编辑说说' ), 'new_item' => __( '新说说' ), 'all_items' => __( '所有说说' ), 'view_item' => __( '查看说说' ), 'search_items' => __( '搜索说说' ), 'not_found' => __( '没有找到有关说说' ), 'not_found_in_trash' => __( '回收站里面没有相关说说' ), 'parent_item_colon' => '', 'menu_name' => '说说' ); $args = array( 'labels' => $labels, 'description' => '说说信息', 'public' => true, 'menu_position' => 5, 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ), 'has_archive' => true ); register_post_type( 'nonsense', $args ); } add_action( 'init', 'my_custom_post_nonsense' );
后台刷新后,发现在“文章”菜单下面出现了新的菜单“说说”。
二、前台函数调用
目的和意义
新建页面并调用自定义模板,实现前台显示新定义文章类型的内容的显示,实现个性化的页面和文章样式。
在主题目录下新建名称为Talk.php的文件并编辑(名称无实际意义,仅为了便于管理):
<?php /* Template Name: 说说 */ get_header(); ?> <section class="container"> <div class="content-wrap"> <div class="content"> <div style="background: #FFF; padding: 30px; border-radius: 5px;"> <ul class="cbp_tmtimeline"> <?php query_posts("post_type=nonsense & post_status=publish & posts_per_page=-1"); if ( have_posts() ) { while ( have_posts() ) { the_post(); ?> <li> <time class="cbp_tmtime"><i class="fa fa-clock-o"></i> <?php the_time('Y年n月j日G:i'); ?></time> <div class="cbp_tmicon"> <img src="https://www.evan.link/图片地址/LOGO.png" class="avatar avatar-48" width="48" height="48"> </div> <div class="cbp_tmlabel" > <span style="font-size:14px;"><?php the_content(); ?></span> <h2><?php the_title(); ?><span><?php echo get_bloginfo('name'); ?> | <?php echo get_bloginfo('description' ); ?></span></h2> </div> </li> <?php } } ?> </ul> </div> </div> </div> </section> <?php get_footer();?>
然后在前台新建页面选择模板“说说”即可,此时在后台“说说”板块发布的内容会自动在新建页面显示。
注意:新建页面的URL别名不要和第一步建立的register_post_type( 'nonsense', $args );
中的nonsense
重复
三、样式和其他设置
实现自定义样式的方式有两种:一是新建CSS文件调用,二是直接写入Talk.php文件中,用户可以自行发挥想象力创建个性化的需求。
以直接写入Talk.php文件为例,编辑Talk.php文件,加入如下代码(该代码同时适配PC端和移动端):
<style> .cbp_tmtimeline { margin: 30px 0 0 0; padding: 0; list-style: none; position: relative; } /* The line */ .cbp_tmtimeline:before { content: ''; position: absolute; top: 0; bottom: 0; width: 10px; background: #f4f5f9; left: 20%; margin-left: -6px; } /* The date/time */ .cbp_tmtimeline > li .cbp_tmtime { display: block; width: 30%; padding-right: 100px; position: absolute; color: #AAA; } .cbp_tmtimeline > li .cbp_tmtime span { display: block; text-align: right; } .cbp_tmtimeline > li .cbp_tmtime span:first-child { font-size: 0.9em; color: #bdd0db; } .cbp_tmtimeline > li .cbp_tmtime span:last-child { font-size: 2.9em; color: #e4f0ff; } .cbp_tmtimeline > li:nth-child(odd) .cbp_tmtime span:last-child { color: #F6F6F6; } /* Right content */ .cbp_tmtimeline > li .cbp_tmlabel { margin: -30px 0 15px 25%; background: #e4f0ff; color: black; padding: 0.8em; font-size: 1.2em; font-weight: 300; line-height: 1.4; position: relative; border-radius: 5px; } .cbp_tmtimeline > li:nth-child(odd) .cbp_tmlabel { background: #F6F6F6; } .cbp_tmtimeline > li .cbp_tmlabel h2 { border-bottom: 0px; border-top:1px dashed #FFF; font-size:16px; height: 24px; padding: 5px 3px 12px; margin:0px; } .cbp_tmtimeline > li .cbp_tmlabel h2 > span { font-size: 12px; float: right; text-align: center; line-height: 24px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* The triangle */ .cbp_tmtimeline > li .cbp_tmlabel:after { right: 100%; border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; border-right-color: #e4f0ff; border-width: 10px; top: 10px; } .cbp_tmtimeline > li:nth-child(odd) .cbp_tmlabel:after { border-right-color: #F6F6F6; } /* The icons */ .cbp_tmtimeline > li .cbp_tmicon { width: 48px; height: 48px; font-family: 'ecoico'; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; font-size: 48px; line-height: 48px; -webkit-font-smoothing: antialiased; position: relative; color: #fff; background: #46a4da; border-radius: 50%; box-shadow: 0 0 0 8px #f4f5f9; text-align: center; left: 20%; top: 0; margin: 0 0 0 -25px; } .cbp_tmtimeline > li .cbp_tmicon >img { border-radius: 50%; position: absolute; top: 0px; left: 0px; } /* Example Media Queries */ @media screen and (max-width: 65.375em) { .cbp_tmtimeline > li .cbp_tmtime span:last-child { font-size: 1.5em; } } @media screen and (max-width: 47.2em) { .cbp_tmtimeline:before { display: none; } .cbp_tmtimeline > li .cbp_tmtime { width: 100%; position: relative; padding: 0 0 20px 0; } .cbp_tmtimeline > li .cbp_tmtime span { text-align: left; } .cbp_tmtimeline > li .cbp_tmlabel { margin: 0 0 30px 0; padding: 1em; font-weight: 400; font-size: 95%; } .cbp_tmtimeline > li .cbp_tmlabel:after { right: auto; left: 20px; border-right-color: transparent; border-bottom-color: #e4f0ff; top: -20px; } .cbp_tmtimeline > li:nth-child(odd) .cbp_tmlabel:after { border-right-color: transparent; border-bottom-color: #F6F6F6; } .cbp_tmtimeline > li .cbp_tmicon { position: relative; float: right; left: auto; margin: -55px 5px 0 0px; } } </style>
- 为了更好的体现视觉效果,新建页面可以选择隐藏侧边栏。该设置可以通过主题自带的选项或插件实现,同样也可以通过代码实现:
在上面的样式代码中加入.sidebar {display: none;}
即可; - 同时,可以屏蔽站点搜索“说说”的内容。编辑主题目录下functions.php文件,加入如下代码:
注意:此代码为限定搜索内容仅搜索“文章”,会屏蔽除默认“文章”内容外的其他搜索
//屏蔽搜索说说 function search_filter_page($query) { if ($query->is_search) { $query->set('post_type', 'post'); } return $query; } add_filter('pre_get_posts','search_filter_page');
至此全部设置完毕(样式预览)。