WordPress建立说说/微博/微语页面

一、后台新建文章类型

目的和意义

新建文章类型以实现独立内容板块和自定义样式;避免在首页显示新建板块的文章内容。
调用函数: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');

至此全部设置完毕(样式预览)

订阅
提醒
0 评论
内嵌讨论
查看全部讨论