WordPress说说页面

发布于 2023-08-05  93 次阅读


在functions.php中添加

 //说说页面功能
 ​
 add_action('init', 'my_custom_init'); 
 function my_custom_init() { 
 $labels = array( 
     'name' => '说说',
     'singular_name' => '说说', 
     'all_items' => '所有说说',
     'add_new' => '发表说说', 
     'add_new_item' => '撰写新说说',
     'edit_item' => '编辑说说', 
     'new_item' => '新说说', 
     'view_item' => '查看说说', 
     'search_items' => '搜索说说', 
     'not_found' => '暂无说说', 
     'not_found_in_trash' => '没有已遗弃的说说', 
     'parent_item_colon' => '',
     'menu_name' => '说说'); 
 $args = array( 
     'labels' => $labels, 
     'public' => true, 
     'publicly_queryable' => true, 
     'show_ui' => true, 
     'show_in_menu' => true, 
     'query_var' => true, 
     'rewrite' => true, 
     'capability_type' => 'post', 
     'has_archive' => true, 
     'hierarchical' => false, 
     'menu_position' => null, 
     'supports' => array('title','editor','author','comments') 
 ); 
 register_post_type('shuoshuo',$args); }

在pages中新建一个shuoshuo.php

    <?php /*
    Template Name: 说说页面
      */
    get_header(); ?>

<style type="text/css">

    #shuoshuo_content {
        /*background-color: #fff;*/
        padding: 15px;
        min-height: 500px;
    }
    /* shuo */
    body.theme-dark .cbp_tmtimeline::before {
        background: RGBA(255, 255, 255, 0.06);
    }
    ul.cbp_tmtimeline {
        padding: 0;
    }
    div class.cdp_tmlabel > li .cbp_tmlabel {
        margin-bottom: 0;
    }
    .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: 4px;
        background: RGBA(0, 0, 0, 0.02);
        left: 80px;
        margin-left: 10px;
    }
    */
    /* The date/time */
    .cbp_tmtimeline > li .cbp_tmtime {
        display: block;
        width: 29%; 
        padding-right: 110px; 
        max-width: 70px;
        position: absolute;
    }
    .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: 1.2em;
        color: #505050;
    }
    .cbp_tmtimeline > li:nth-child(odd) .cbp_tmtime span:last-child {
        color: RGBA(255, 125, 73, 0.75);
    }
    div.cbp_tmlabel > p {
        margin-bottom: 0;
    }
    /* Right content */
    .cbp_tmtimeline > li .cbp_tmlabel {
        margin: 45px 0 0 65px;
        background: #505050;
        color: white;
        padding: .8em 1.2em .4em 1.2em;
        /* font-size: 1.2em; */
        font-weight: 300;
        line-height: 1.4;
        position: relative;
        border-radius: 20px;
        transition: all 0.3s ease 0s;
        box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
        cursor: pointer;
        display: block;
    }
    
    .cbp_tmlabel:hover {
    
        /* transform:scale(1.05); */
        
        transform: translateY(-3px);
        z-index: 1;
        -webkit-box-shadow: 0 15px 32px rgba(0, 0, 0, 0.15) !important
    }
    .cbp_tmtimeline > li:nth-child(odd) .cbp_tmlabel {
        background: #505050;
    }
    
    /* 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: #9BCD9B;
        border-width: 10px;
        top: 4px;
    }
    */
    
    .cbp_tmtimeline > li:nth-child(odd) .cbp_tmlabel:after {
        border-right-color: RGBA(255, 125, 73, 0.75);
    }
    p.shuoshuo_time {
        margin-top: 10px;
        border-top: 1px dashed #fff;
        padding-top: 5px;
    }
    /* Media */
    
    @media screen and (max-width: 65.375em) {
        .cbp_tmtimeline > li .cbp_tmtime span:last-child {
            font-size: 1.2em;
        }
    }
    
    .shuoshuo_author_img img {
        border: 1px solid #ddd;
        padding: 2px;
        float: left;
        border-radius: 64px;
        transition: all 1.0s;
    }
    .avatar {
        -webkit-border-radius: 100% !important;
        -moz-border-radius: 100% !important;
        box-shadow: inset 0 -1px 0 #3333sf;
        -webkit-box-shadow: inset 0 -1px 0 #3333sf;
        -webkit-transition: 0.4s;
        -webkit-transition: -webkit-transform 0.4s ease-out;
        transition: transform 0.4s ease-out;
        -moz-transition: -moz-transform 0.4s ease-out;
    }
    
    .zhuan {
        transform: rotateZ(720deg);
        -webkit-transform: rotateZ(720deg);
        -moz-transform: rotateZ(720deg);
    }
    .pinglun{
        font-size: 16px;
        float: right;
        margin: 5px 20px 0 0;
    }
    

</style>
    
<!--</head>-->
<body>
    
<? 
    function display_comments_with_indent($comments, $parent_id = 0, $indent = 0) {
    $has_children = false;
    foreach ($comments as $comment) {
        if ($comment->comment_parent == $parent_id) {
            if (!$has_children) {
                $has_children = true; // 第一次找到子评论时,开始一个新的列表
                echo '<ul class="comments-list' . ($indent > 0 ? ' comments-reply' : '') . '">';
            }
            echo '<li style="margin-left:' . $indent * 20 . 'px;">' . $comment->comment_content;
            // 递归:查找并显示当前评论的子评论
            display_comments_with_indent($comments, $comment->comment_ID, $indent + 1);
            echo '</li>';
        }
    }
    if ($has_children) echo '</ul>';
    }
?>
    
    
<div id="shuoshuo_content">
    <ul class="cbp_tmtimeline">
        <?php
            //分页
            $limit = get_option('posts_per_page');
            $paged = get_query_var('paged') ? get_query_var('paged') : 1;
            query_posts('post_type=shuoshuo&post_status=publish&showposts='.$limit=64 .'&paged=' . $paged);
            
            if (have_posts()) : while (have_posts()) : the_post(); 
        ?>
        <li> 
            <span class="shuoshuo_author_img"><img src="https://blog.iorishiroha.space/wp-content/uploads/2021/01/cropped-tx.jpg" class="avatar avatar-48" width="48" height="48"></span>
            <a class="cbp_tmlabel" href="javascript:void(0)">
                <p><?php the_content(); ?></p>
                <p class="shuoshuo_time">
                    <i class="fa fa-clock-o"></i>  
                    <?php the_time('Y年n月j日 G:i'); ?>    
                    <?php the_author() ?>
                    
                    <?php
                        // 获取当前帖子的ID
                        $post_id = get_the_ID();
                        // 获取评论,并按时间升序排序
                        $comments = get_comments(array(
                            'post_id' => $post_id,
                            'status' => 'approve', // 仅显示已批准的评论
                            'order' => 'ASC' // 按时间升序排序
                        ));
                        // 显示评论及其子评论
                        display_comments_with_indent($comments);
                    ?>
                </p>
                 <!--评论-->
                <a class="pinglun" href="<?php echo get_permalink();?>">评论</a>
                <p style="clear:  right;"></p>
            </a>
            <?php endwhile; endif; ?>
        </li>
    </ul>
    <!--文章分页-->
    <?php
        if (function_exists('wp_pagenavi')) 
            wp_pagenavi();
        else { ?>
        <div>
            <?php previous_posts_link('【« 上一页】') ?><?php next_posts_link('【下一页 »】') ?>
        </div>
    <?php } ?>
</div>
</body>
    
    
    
    
    
<script type="text/javascript">
    $(function () {
        var oldClass = "";
        var Obj = "";
        $(".cbp_tmtimeline li").hover(function () {
            Obj = $(this).children(".shuoshuo_author_img");
            Obj = Obj.children("img");
            oldClass = Obj.attr("class");
            var newClass = oldClass + " zhuan";
            Obj.attr("class", newClass);
        }, function () {
            Obj.attr("class", oldClass);
        })
    })
</script>



<?php
get_footer();


THE END