最近有一个想法,就是写一个专题,但是突然发现我正在使用的wordpress主题没有专题这个功能,于是就打算自己写一个专题功能。

最开始的思路是使用专题插件,但是搜索出来的很多插件都有点太老了,而且使用起来也是有很多的问题,既然如此,那就自己动手开始写吧。

现在的思路是使用分类作为专题的目录,然后我们新建一个页面,在这个页面输入我们需要调用的专题分类ID即可,实际制作过程中还是遇到了很多的小问题。

头图公主殿下:https://www.pixiv.net/artworks/85165135

创建页面模板

首先,我们在主题目录下新建一个topic.php文件,然后声明一下这个文件是一个页面模板

<?php 
/* 
 
Template Name: Topics
Author: kaygb

*/  
?> 

首先,在我们调用分类的时候,需要知道这个专题分类的id,查看id的方式很简单,将鼠标放在分类名称上,左下角即可看到id的信息

image-20201022143558878

通过这个链接我们可知这个分类的ID是14

那么在对这个ID操作之前,我们得告诉这个专题页面我们要调用这个分类ID吧,其实我在这一步卡了一段时间,突然想到typecho有自定义字段,于是搜索一下wp有没有,结果还真有,那么我们就利用一下自定义字段。

新建独立页面,然后模板选择我们的topic

image-20201022150208255

在独立页面编辑器的上方右侧,可以找到显示选项,然后把自定义栏目给勾选上。

image-20201022150049571

这个时候在编辑器的下方应该会出现自定义栏目的区块了,点击输入新栏目,名称就叫做topic_id吧,然后值就填目标专题的分类id。

image-20201022150305208

然后我们回到模板编辑那里获取一下自定义栏目填写的值

$topic_id = get_post_meta($post->ID, 'topic_id', true);  ////获取自定义字段的值

这里我做了一个判断,如果值中间有逗号,那么就代表着需要调用多个专题分类,那么久将这个值通过逗号进行分割成一个数组,然后循环输出该分类id的名称还有链接地址。

完整代码

当然这只是功能的实现,代码仅供参考,具体的样式还有显示方式需要自己根据主题的不同来做自定义调整
<?php

    $topic_de_id = 0;   // 为填写id时默认为0
    
    $topic_id = get_post_meta($post->ID, 'topic_id', true);  ////获取自定义字段的值
    
    if (empty ( $topic_id )) { //如果值为空,输出默认值
        $topic_id = $topic_de_id;
    }
    // 判断值是否有逗号,如果有逗号的话则转换成数组,然后循环输出专题
    $hasDouhao = strstr($topic_id,",");
    
    if ($hasDouhao == true){
        $topic_id_arr = explode(',',$topic_id);
        for ($i = 0; $i < sizeof($topic_id_arr); $i++) {
            $category_link = get_category_link( $topic_id_arr[$i] );
            $category_name = get_cat_name( $topic_id_arr[$i]);
            ?>
            <!--输出分类及其链接 -->
            <a href="<?php echo esc_url( $category_link ); ?>" title="<?php echo $category_name; ?>"> <?php echo $category_name; ?> </a>
            <?php
            $posts = get_posts( 'numberposts=-1&category=1' );
            echo count($posts);
            ?>数组循环输出topic_id <?php echo $topic_id_arr[$i]; ?>

<?php } //end_for
    }else {
        // 通过分类ID获取分类链接
        $category_link = get_category_link( $topic_id );
        $category_name = get_cat_name( $topic_id);?>
        
        <!--输出分类及其链接 -->
        <a href="<?php echo esc_url( $category_link ); ?>" title="<?php echo $category_name; ?>"> <?php echo $category_name; ?> </a>
        <?php
        $posts = get_posts( 'numberposts=-1&category=1' );
        echo count($posts);
        ?>输出topic_id <?php echo $topic_id; ?>

<?php } ?>

其中使用的关键函数

// 通过分类ID获取分类链接,$topic_id为自定义字段的值
        $category_link = get_category_link( $topic_id );
        $category_name = get_cat_name( $topic_id);?>
微信公众号
最后修改:2020 年 10 月 22 日 03 : 28 PM
如果您觉得我的文章有帮助,请随意赞赏!