给自己的网站加一个作者主页功能

因为自己的网站有一个荣誉墙,为了实现荣誉墙的第2个效果,就需要加一个作者主页功能。这两个相互配合简直天衣无缝。

荣誉墙在这里:

简单说明一下:

就是获取某个用户发了多少文章post、片刻moment和评论comment,统计一下数量然后列出来。

文章和评论的文字都是红色,因为片刻有的可能没有标题,如果有标题取《标题》,文字红色显示,如果没有标题取内容前30个文字,文字蓝色表示。以上全部带有链接,点击即可快速到达。

有两个效果:

效果一是普通的网页下翻,如果发布的数量少还可以,数量多的话不建议;

效果二是做成了像Widows选项卡一样可以相互切换的,现在本站用的这种,也比效果一好看。效果二分为效果二(1)和效果二(2),效果二(1)文章显示个数受到后台–设置–阅读设置–博客页面至多显示的个数限制,效果二(2)则不限制,会把作者发布的所有文章显示出来。

效果一如下图:

fstring 的作者主页

给自己的网站加一个作者主页功能-似水流年

效果二如下图:

给自己的网站加一个作者主页功能-似水流年

一、在pix主题目录下新建author.php代码如下:

效果一代码如下:

<?php get_header(); ?>

<style>    
    #content{margin:20px;background-color:#f7f7f7;padding:20px}h2{font-size:18px;margin-bottom:10px;color:#333;text-align:center;font-weight:bold}p{margin-bottom:5px;color:#333}ul{list-style-type:none;padding-left:0}.content-item{border:1px dashed #ccc;padding:10px;background-color:#fff;margin-bottom:10px}a{text-decoration:none;color:#333}.post-title{color:red}.comment-text{color:red}.moment-title{color:red}.moment-content{color:blue}</style>

<div id="content" class="narrowcolumn">

    <!– This sets the $curauth variable –>

    <?php
    if(isset($_GET['author_name'])) :
        $curauth = get_userdatabylogin($author_name);
    else :
        $curauth = get_userdata(intval($author));
    endif;

    // 获取用户ID
    $user_id = $curauth->ID;

    // 获取用户发布的文章数量
    $post_count = count_user_posts($user_id);
    // 获取用户发布的评论数量
    $comment_count = get_comments(array(
        'user_id' => $user_id,
        'count' => true,
    ));

    // 获取用户发布的片刻
    $moment_args = array(
        'author' => $user_id,
        'post_type' => 'moment',
        'post_status' => 'publish',
        'posts_per_page' => -1,
    );
    $moment_query = new WP_Query($moment_args);

    ?>

    <h2><?php echo $curauth->nickname; ?>的作者主页</h2>

    <h2><p>发布的文章数量: <?php echo $post_count; ?></p></h2>

    <ul>
        <!– The Loop –>

        <?php
        if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
            <li class="content-item">
                <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
                    <span class="post-title"><?php the_title(); ?></span></a>
            </li>

        <?php endwhile; else: ?>
            <p><?php _e('该用户尚未发布任何文章。'); ?></p>

        <?php endif; ?>

        <!– End Loop –>

    </ul>

    <?php if ( $moment_query->have_posts() ) : ?>
        <h2><p>发布的片刻数量: <?php echo $moment_query->post_count; ?></p></h2>
        <ul>
            <?php while ( $moment_query->have_posts() ) : $moment_query->the_post(); ?>
                <li class="content-item">
                    <?php
                    $moment_content = get_the_content();
                    $moment_text = wp_strip_all_tags($moment_content);
                    $moment_link = get_permalink();
                    ?>
                    <?php if ( get_the_title() ) : ?>
                        <?php echo '<a href="' . $moment_link . '"><span class="moment-title">' . '《' . get_the_title() . '》' . '</span></a>'; ?>
                    <?php else : ?>
                        <?php echo '<a href="' . $moment_link . '"><span class="moment-content">' . wp_trim_words( $moment_text, 30, '...' ) . '</span></a>'; ?>
                    <?php endif; ?>
                </li>
            <?php endwhile; ?>
        </ul>
        <?php wp_reset_postdata(); ?>
    <?php endif; ?>

    <?php
    $comments_args = array(
        'user_id' => $user_id,
        'status' => 'approve',
    );
    $comments = get_comments($comments_args);
    ?>

    <?php if ($comments) : ?>
        <h2><p>发布的评论数量: <?php echo $comment_count; ?></p></h2>
        <ul>
            <?php foreach ($comments as $comment) : ?>
                <li class="content-item">
                    <a href="<?php echo get_comment_link($comment); ?>">
                        <span class="comment-text"><?php echo get_comment_text($comment->comment_ID); ?></span>
                    </a>
                </li>
            <?php endforeach; ?>
        </ul>
    <?php endif; ?>

</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

效果二(1)代码如下:

<?php get_header(); ?>

<style>
    #content{margin:20px;background-color:#f7f7f7;padding:20px}h2{font-size:18px;margin-bottom:10px;color:#333;text-align:center;font-weight:bold}p{margin-bottom:5px;color:#333}ul{list-style-type:none;padding-left:0}.content-item{border:1px dashed #ccc;padding:10px;background-color:#fff;margin-bottom:10px}a{text-decoration:none;color:#333}.post-title{color:red}.comment-text{color:red}.moment-title{color:red}.moment-content{color:blue}.tab{overflow:hidden;background-color:#f1f1f1;display:flex;border-top-left-radius:10px;border-top-right-radius:10px}.tab a{flex:1;text-align:center;padding:14px 16px;text-decoration:none;color:#666;background-color:#f1f1f1;border:1px solid #ccc;border-bottom:none;border-top-left-radius:10px;border-top-right-radius:10px}.tab a.active{background-color:#ccc;color:#333;font-weight:bold;border-bottom-color:#f1f1f1}.tab a:hover{background-color:#ddd}.tabcontent{display:none;padding:20px;background-color:#f9f9f9;border:1px solid #ccc}</style>

<div id="content" class="narrowcolumn">

    <!-- This sets the $curauth variable -->
    <?php
    if(isset($_GET['author_name'])) :
        $curauth = get_userdatabylogin($author_name);
    else :
        $curauth = get_userdata(intval($author));
    endif;

    // 获取用户ID
    $user_id = $curauth->ID;

    // 获取用户发布的文章数量
    $post_count = count_user_posts($user_id);
    // 获取用户发布的评论数量
    $comment_count = get_comments(array(
        'user_id' => $user_id,
        'count' => true,
    ));

    // 获取用户发布的片刻
    $moment_args = array(
        'author' => $user_id,
        'post_type' => 'moment',
        'post_status' => 'publish',
        'posts_per_page' => -1,
    );
    $moment_query = new WP_Query($moment_args);

    // 获取用户发布的评论
    $comments_args = array(
        'user_id' => $user_id,
        'status' => 'approve',
    );
    $comments = get_comments($comments_args);

    ?>
    <h2><?php echo $curauth->nickname; ?>的作者主页</h2>

    <div class="tab">
        <a href="javascript:void(0);" class="tablinks active" onclick="openTab('articles')">文章(<?php echo $post_count; ?>)</a>
        <a href="javascript:void(0);" class="tablinks" onclick="openTab('moments')">片刻(<?php echo $moment_query->post_count; ?>)</a>
        <a href="javascript:void(0);" class="tablinks" onclick="openTab('comments')">评论(<?php echo $comment_count; ?>)</a>
    </div>

    <div id="articles" class="tabcontent" style="display: block;">
        <ul>
            <!-- The Loop -->
            <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <li class="content-item">
                    <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
                        <span class="post-title"><?php the_title(); ?></span></a>
                </li>
            <?php endwhile; else: ?>
                <p><?php _e('该用户尚未发布任何文章。'); ?></p>
            <?php endif; ?>
            <!-- End Loop -->
        </ul>
    </div>

    <div id="moments" class="tabcontent">
        <ul>
            <?php if ( $moment_query->have_posts() ) : while ( $moment_query->have_posts() ) : $moment_query->the_post(); ?>
                <li class="content-item">
                    <?php
                    $moment_content = get_the_content();
                    $moment_text = wp_strip_all_tags($moment_content);
                    $moment_link = get_permalink();
                    ?>
                    <?php if ( get_the_title() ) : ?>
                        <?php echo '<a href="' . $moment_link . '"><span class="moment-title">' . '《' . get_the_title() . '》' . '</span></a>'; ?>
                    <?php else : ?>
                        <?php echo '<a href="' . $moment_link . '"><span class="moment-content">' . wp_trim_words( $moment_text, 30, '...' ) . '</span></a>'; ?>
                    <?php endif; ?>
                </li>
            <?php endwhile; else: ?>
                <p><?php _e('该用户尚未发布任何片刻。'); ?></p>
            <?php endif; ?>
        </ul>
    </div>

    <div id="comments" class="tabcontent">
        <ul>
            <?php if ($comments) : foreach ($comments as $comment) : ?>
                <li class="content-item">
                    <a href="<?php echo get_comment_link($comment); ?>">
                        <span class="comment-text"><?php echo get_comment_text($comment->comment_ID); ?></span>
                    </a>
                </li>
            <?php endforeach; else: ?>
                <p><?php _e('该用户尚未发布任何评论。'); ?></p>
            <?php endif; ?>
        </ul>
    </div>

</div>

<script>
    function openTab(evt, tabName) {
        var i, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tabcontent");
        for (i = 0; i < tabcontent.length; i++) {
            tabcontent[i].style.display = "none";
        }
        tablinks = document.getElementsByClassName("tablinks");
        for (i = 0; i < tablinks.length; i++) {
            tablinks[i].className = tablinks[i].className.replace(" active", "");
        }
        document.getElementById(tabName).style.display = "block";
        evt.currentTarget.className += " active";
    }
    
    function openTab(tabName) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tabcontent");
    for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
    }
    tablinks = document.getElementsByClassName("tablinks");
    for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
    }
    document.getElementById(tabName).style.display = "block";
    document.querySelector(`[onclick="openTab('${tabName}')"]`).className += " active";
    }
    
</script>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

效果二(2)代码如下:

<?php get_header(); ?>

<style>
    #content{margin:20px;background-color:#f7f7f7;padding:20px}h2{font-size:18px;margin-bottom:10px;color:#333;text-align:center;font-weight:bold}p{margin-bottom:5px;color:#333}ul{list-style-type:none;padding-left:0}.content-item{border:1px dashed #ccc;padding:10px;background-color:#fff;margin-bottom:10px}a{text-decoration:none;color:#333}.post-title{color:red}.comment-text{color:red}.moment-title{color:red}.moment-content{color:blue}.tab{overflow:hidden;background-color:#f1f1f1;display:flex;border-top-left-radius:10px;border-top-right-radius:10px}.tab a{flex:1;text-align:center;padding:14px 16px;text-decoration:none;color:#666;background-color:#f1f1f1;border:1px solid #ccc;border-bottom:none;border-top-left-radius:10px;border-top-right-radius:10px}.tab a.active{background-color:#ccc;color:#333;font-weight:bold;border-bottom-color:#f1f1f1}.tab a:hover{background-color:#ddd}.tabcontent{display:none;padding:20px;background-color:#f9f9f9;border:1px solid #ccc}</style>

<div id="content" class="narrowcolumn">

    <!-- This sets the $curauth variable -->
    <?php
    if(isset($_GET['author_name'])) :
        $curauth = get_userdatabylogin($author_name);
    else :
        $curauth = get_userdata(intval($author));
    endif;

    // 获取用户ID
    $user_id = $curauth->ID;

    // 获取用户发布的文章数量
    $post_count = count_user_posts($user_id);
    // 获取用户发布的评论数量
    $comment_count = get_comments(array(
        'user_id' => $user_id,
        'count' => true,
    ));

    // 获取用户发布的片刻
    $moment_args = array(
        'author' => $user_id,
        'post_type' => 'moment',
        'post_status' => 'publish',
        'posts_per_page' => -1,
    );
    $moment_query = new WP_Query($moment_args);

    // 获取用户发布的评论
    $comments_args = array(
        'user_id' => $user_id,
        'status' => 'approve',
    );
    $comments = get_comments($comments_args);

    ?>
    <h2><?php echo $curauth->nickname; ?>的作者主页</h2>

    <div class="tab">
        <a href="javascript:void(0);" class="tablinks active" onclick="openTab('articles')">文章(<?php echo $post_count; ?>)</a>
        <a href="javascript:void(0);" class="tablinks" onclick="openTab('moments')">片刻(<?php echo $moment_query->post_count; ?>)</a>
        <a href="javascript:void(0);" class="tablinks" onclick="openTab('comments')">评论(<?php echo $comment_count; ?>)</a>
    </div>

    <div id="articles" class="tabcontent" style="display: block;">
        <ul>
            <!-- The Loop -->
            <?php
            $author_posts = new WP_Query( array(
                'author' => $user_id,
                'post_type' => 'post',
                'post_status' => 'publish',
                'posts_per_page' => -1,
            ) );
            if ( $author_posts->have_posts() ) : while ( $author_posts->have_posts() ) : $author_posts->the_post();
            ?>
                <li class="content-item">
                    <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
                        <span class="post-title"><?php the_title(); ?></span>
                    </a>
                </li>
            <?php endwhile; else: ?>
                <p><?php _e('该用户尚未发布任何文章。'); ?></p>
            <?php endif; ?>
            <!-- End Loop -->
        </ul>
    </div>

    <div id="moments" class="tabcontent">
        <ul>
            <?php if ( $moment_query->have_posts() ) : while ( $moment_query->have_posts() ) : $moment_query->the_post(); ?>
                <li class="content-item">
                    <?php
                    $moment_content = get_the_content();
                    $moment_text = wp_strip_all_tags($moment_content);
                    $moment_link = get_permalink();
                    ?>
                    <?php if ( get_the_title() ) : ?>
                        <?php echo '<a href="' . $moment_link . '"><span class="moment-title">' . '《' . get_the_title() . '》' . '</span></a>'; ?>
                    <?php else : ?>
                        <?php echo '<a href="' . $moment_link . '"><span class="moment-content">' . wp_trim_words( $moment_text, 30, '...' ) . '</span></a>'; ?>
                    <?php endif; ?>
                </li>
            <?php endwhile; else: ?>
                <p><?php _e('该用户尚未发布任何片刻。'); ?></p>
            <?php endif; ?>
        </ul>
    </div>

    <div id="comments" class="tabcontent">
        <ul>
            <?php if ($comments) : foreach ($comments as $comment) : ?>
                <li class="content-item">
                    <a href="<?php echo get_comment_link($comment); ?>">
                        <span class="comment-text"><?php echo get_comment_text($comment->comment_ID); ?></span>
                    </a>
                </li>
            <?php endforeach; else: ?>
                <p><?php _e('该用户尚未发布任何评论。'); ?></p>
            <?php endif; ?>
        </ul>
    </div>

</div>

<script>
    function openTab(evt, tabName) {
        var i, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tabcontent");
        for (i = 0; i < tabcontent.length; i++) {
            tabcontent[i].style.display = "none";
        }
        tablinks = document.getElementsByClassName("tablinks");
        for (i = 0; i < tablinks.length; i++) {
            tablinks[i].className = tablinks[i].className.replace(" active", "");
        }
        document.getElementById(tabName).style.display = "block";
        evt.currentTarget.className += " active";
    }
    
    function openTab(tabName) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tabcontent");
    for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
    }
    tablinks = document.getElementsByClassName("tablinks");
    for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
    }
    document.getElementById(tabName).style.display = "block";
    document.querySelector(`[onclick="openTab('${tabName}')"]`).className += " active";
    }
    
</script>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

二、加入右上角登录后控制台下方。

给自己的网站加一个作者主页功能-似水流年

修改pix/layouts/header-tool.php,找到

<a href="<?php echo home_url('/wp-admin'); ?>" target="_blank" pjax="exclude"><i class="ri-function-line"></i>控制台</a>

在其下方加入如下代码:

<?php 
      if (is_user_logged_in()) {
         $current_user = wp_get_current_user();
         $author_url = home_url('/author/') . $current_user->user_login; 
?>
<a href="<?php echo $author_url; ?>"><i class="ri-user-3-fill"></i>我的主页</a>
<?php } ?>

这样登录用户可以直接查看自己的主页。

更新缓存,大功告成!

© 版权声明
THE END
喜欢就支持一下吧
点赞9赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容