之前发布过一篇关于wp自定义创建类似文章类型的文章:《wp/wordpress新增自定义文章类型:专题,让后台不仅仅只有文章类型!
可能写的不够详细,最近网友问这个前端为什么不显示内容,随后七娃本着“雷锋”的态度翻了翻代码,度娘了一天,终于把这块“硬骨头”啃下了。估计之前写文章的时候仅仅实现了后台部分,哈哈,这篇文章弥补一下我的错误。废话不多说,上代码!

一.后台效果实现

1.wordpress后台部分,请在functions.php中添加下面代码:

function qui_class() {
    register_post_type( 'series', //新增文章类型,series为名称
        array(
            'labels' => array(
                'name' => '专题',
                'singular_name' => '所有专题',
                'add_new' => '添加专题',
                'add_new_item' => '添加新专题',
                'edit' => '编辑',
                'edit_item' => '编辑专题',
                'new_item' => '新专题',
                'view' => '查看专题',
                'view_item' => '查看专题',
                'search_items' => '搜索专题',
                'not_found' => '没有找到相关专题',
                'not_found_in_trash' => '没有专题评论',
                'parent' => '专题评论',
            ),
            'exclude_from_search'=>false,
            'public' => true,
            'menu_position' => 6,
            'supports' => array( 'title', 'editor','comments', 'custom-fields','thumbnail','excerpt'), //为自定义文章添加标题,编辑器,评论,自定义字段,特色图像,摘要功能
            'taxonomies' => array( '' ), //分类法,我们是单独定义
            'has_archive' => true,
            'taxonomies'=> array('post_tag'), //没有这一句是没有标签功能的
        )
    );
}
add_action( 'init', 'qui_class' ); //挂载函数
//为商品类自定义类型增加分类功能
add_action( 'init', 'qui_class_child', 0 ); 
function qui_class_child() {
    register_taxonomy(
        $name='series_category',
        $post_type='series',
        array(
            'labels' => array(
                'name' => '专题分类',
                'add_new_item' => '添加专题',
                'new_item_name' => "新专题分类"
            ),
            'show_ui' => true,
            'show_tagcloud' => true,
            'hierarchical' => true,
        )
    );
}

以上代码和之前的文章差不多,刷新后台之后就发现后台出现了“专题”的分类,如下:

wordpress自定义“专题”分类及页面并调用数据(wordpress 自定义文章类型)-QUI-Notes

二.前屏调用数据及模板设置

首先我们在后台创建2个分类:电影,音乐,然后分别在分类下新增对应的测试文章,然后前台才能够调用!

2.前屏调用我准备详细啰嗦展开说这里面的坑。之前一直以为这块代码是直接读取数据库,直到前几天功能实现我才发现”OMG,是我复杂化了“。不得不夸一下wp这个框架,不愧是模板界的天花板,原来都是”模板“啊!

为什么说是模板呢?因为这个自定义的分类需要用到taxonomy页面模板,不过有的主题没有taxonomy.php页面,七娃对比了6个都没有找到相关的源码。只能连蒙带猜一遍一遍的尝试,才把数据调出来。

a.如何在首页调用所有的自定义分类对应的数据,例如:分类id,描述,别名,名称,甚至新增的图片封面。

方案一:

<?php 
// 调用自定义分类字段信息
$terms = get_terms( 'series_category',array(
    'orderby' => 'count',
) );
foreach ($terms as $item): 
?>
<li><a href="<?php echo get_term_link($item);?>"><?php echo $item->name. 
' ID:'.$item->term_id.
' 数量:'.$item->count.
' 描述:'.$item->description.
' 别名:'.$item->slug.
''; ?></a></li>
<?php endforeach;?>

方案二:

<?php 
$args=array(
'taxonomy' => 'series_category',
'hide_empty'=>'0',
'hierarchical'=>1,
'parent'=>'0',
);
$categories=get_categories($args);
foreach($categories as $category){
$cat_id = $category->term_id;
echo  $cat_id;
echo  $category->description;
};
?>

以上两种方案都可以调出以下数据,如图:
wordpress自定义“专题”分类及页面并调用数据(wordpress 自定义文章类型)-QUI-Notes

b.分类页面实现

前面说的taxonomy模板,重点来了。主题里新建模板页面并命名为:taxonomy-series_category.php,不要问为什么命名这么奇怪,因为第一步后台定义的分类别名叫”$name='series_category'“,想让页面路由好看就把这个地方修改短一些,此处不多说,认真读文章的都知道了吧。

然后将以下代码复制进模板中:

<!--自定义文章类型分类模板-->
<?php
 $taxonomy = get_queried_object();
 echo "当前分类:". $taxonomy->name;//名称
 echo  $taxonomy->description;//描述
 echo  $taxonomy->slug;//别名
 $cat_id = $taxonomy->term_id;
?>
<?php
$qui_posts = new WP_Query(
array(
'post_type' => 'series',//自定义文章类型,这里为site
'tax_query' => array(
array(
'taxonomy' => 'series_category',//自定义文章类型的分类法名称
'field'    => 'id',
'terms'    => $cat_id,//分类法ID
)
),
)
);
if ($qui_posts->have_posts()): while ($qui_posts->have_posts()): $qui_posts->the_post(); 
?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" >
<span class="text-h1"><?php the_title(); ?></span>
<time><?php the_time('Y-m-d') ?></time>
</a>
</li>
<?php endwhile; endif; ?>

wordpress自定义“专题”分类及页面并调用数据(wordpress 自定义文章类型)-QUI-Notes

进前台点击首页的专题,就可以进入到这个专题页面了。怎么样?是不是很酷,终于实现了传说中的专题效果!!!我真的想把这篇文章设置成收费,算了!知识无价,时间无价,技术还是需要有人分享的。

最后就是专题详情页面了,一个专题列表可以有很多专题,点击之后就进入唯一的专题详情页面,与文章详情一样。不废话,接招!

c.专题详情页面实现

建模板,命名为”single-series.php“,不要问为什么这次叫series,而不是series_category,因为你创建的文章类型叫series。就这!对就这,也可以直接复制single.php,因为里面获取文章标题内容方法一模一样,就TMD名称不一样,这个搞得我好郁闷。哈哈,不过能实现就行。
我的测试代码如下:

<?php if(have_posts()) : ?>
<?php while(have_posts()) : the_post(); ?> 
<div class="page_tag"><?php the_category(',') ?></div>   
<div class="post"  id="post-<?php the_ID(); ?>">
    <h1><?php the_title(); ?></h1>
    <div class="post-info border-bottom"><q><?php the_author(); ?></q></div>
    <div class="post-content">
        <!-- 文章广告 start -->
        <?php if( get_option("ad_single") ) {   ?><div class="article-gg"><?php echo get_option("ad_single");  ?></div><?php } ?>
        <!-- 文章广告 end -->
        <?php the_content(); ?> 
    </div>
</div>
 <?php    endwhile; ?>
 <?php endif; ?>

看效果:
wordpress自定义“专题”分类及页面并调用数据(wordpress 自定义文章类型)-QUI-Notes

以上就是这篇《wordpress实现自定义专题的教程了》,技术无价,能帮助别人就是真正的有用之举。另外下面附赠彩蛋,收费哦!

内容查看此隐藏内容查看价格6.66立即支付
此资源为VIP资源,虚拟商品,售出不退!

资源下载资源下载价格6.66立即支付
此资源为收费资源,虚拟商品,售出不退!