wordpress自定义“专题”分类及页面并调用数据(wordpress 自定义文章类型)
七娃博客897人阅读
之前发布过一篇关于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, ) ); }
以上代码和之前的文章差不多,刷新后台之后就发现后台出现了“专题”的分类,如下:
二.前屏调用数据及模板设置
首先我们在后台创建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; }; ?>
以上两种方案都可以调出以下数据,如图:
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; ?>
进前台点击首页的专题,就可以进入到这个专题页面了。怎么样?是不是很酷,终于实现了传说中的专题效果!!!我真的想把这篇文章设置成收费,算了!知识无价,时间无价,技术还是需要有人分享的。
最后就是专题详情页面了,一个专题列表可以有很多专题,点击之后就进入唯一的专题详情页面,与文章详情一样。不废话,接招!
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自定义“专题”分类及页面并调用数据(wordpress 自定义文章类型)》 […]