推广 热搜: 后台  帝国cms  DESTOON  位置  网站  帝国cms建站  内容  Wordpress教程  MAC系统  邮箱 

WordPress使用自定义文章类型实现任意模板的方法

   日期:2019-06-12     浏览:186    违规举报
 
腾讯云服务器优惠

这几天在搭建博客的时候,碰到了一个对我来说很棘手的问题。WordPress自带的文章类型只能使用他们特定的模版,而我由于想做一个心情时间轴的板块,所以只能自定义文章的类型,让他来支持我的这个模版。于是网上找资料,并且以插件的形式来表现,得到了如下的解决方案:

主要就是使用了register_post_type 函数。

1、创建插件目录

新建一个文件夹用来存放插件文件,这里我就命名这个文件夹为myMood

2、创建PHP代码文件

在刚才创建的文件夹里面新建一个php文件,命名为myMood,用来书写插件代码

3、添加头部描述

<?php  ?>

4、注册自定义函数

在刚刚创建的php文件代码中,在?>前面添加函数:

add_action( 'init', 'create_myMood' );

得到如下代码:

<?php    add_action( 'init', 'create_myMood' );?>

5、添加函数功能

把下面这段代码添加到 add_action( 'init', 'create_myMood' ); 的前面

function create_lsxq() {  register_post_type( 'lsxq',  array(  'labels' => array(  'name' => '零散心情',  'singular_name' => 'lsxq',  'add_new' => '写心情',  'add_new_item' => '添加一条新心情',  'edit' => 'Edit',  'edit_item' => 'Edit lsxq',  'new_item' => 'New lsxq',  'view' => 'View',  'view_item' => 'View lsxq',  'search_items' => 'Search lsxq',  'not_found' => 'No lsxq found',  'not_found_in_trash' => 'No lsxq found in Trash',  'parent' => 'Parent lsxq'  ),  'public' => true,  'menu_position' => 15,  'supports' => array( 'title', 'editor', 'comments', 'thumbnail' ),  'taxonomies' => array( '' ),  'menu_icon' => plugins_url( 'images/image.png', __FILE__ ),  'has_archive' => true  )  );}

对 register_post_type 这个函数发出声明,它就为新的文章类型做好了各种管理功能。这个函数包括两个参数:第一个是定义了自定义文章类型的名字 ;第二个是一个数组,用来定义新的自定义文章类型的属性。

第一个参数很简单,大家自己领悟。这里简单说下地位个参数:

'public' => true 决定该文章类型在管理后台和前端的可见性

'menu_position' => 5 决定该文章类型菜单的位置

'supports' => array( 'title', 'editor', 'comments', 'thumbnail') 决定自定义文章类型的功能

'taxonomies' => array( '' ) 创建自定义分类,这里没有定义。

'menu_icon' => plugins_url( 'image.png', __FILE__ ) 显示管理菜单的图标,图标文件放在和插件同一目录,为16*16像素

'has_archive' => true 启用自定义文章类型的存档功能

请访问 register_post_type 了解更多关于该函数的参数细节。

6、创建一个该自定义文章类型的模版

打开刚刚的代码文件,在

add_action( 'init', 'create_lsxq' );

语句前面添加下面这一语句:

add_filter( 'template_include', 'include_template_function', 1 );

7、实现该函数的功能

function include_template_function( $template_path ) {  if ( get_post_type() == 'lsxq' ) {  if ( is_single() ) {  if ( $theme_file = locate_template( array ( 'single-lsxq.php' ) ) ) {  $template_path = $theme_file;  } else {  $template_path = plugin_dir_path( __FILE__ ) . '/single-lsxq.php';  }  }  }  return $template_path;}

该代码段添加在下面语句的后面

add_filter( 'template_include', 'include_template_function', 1 );

8、创建单页面模版single-lsxq.php

创建一个名字为single-lsqx.php的文件,主要代码段如下:

<?php  $mypost = array( 'post_type' => 'lsxq', );  $loop = new WP_Query( $mypost );  ?>  <?php while ( $loop->have_posts() ) : $loop->the_post();?>  <div class="item">  <h3> <span class="fr"><?php the_time('Y-n-j H:i') ?></span> </h3>  <div class="con">  <?php the_content(); ?>  </div>  </div><?php endwhile; ?>

现在,我们已经通过循环创建了一个基本的页面模板。这个 函数检索自定义文章类型的元素,并在循环中使用它们。现在自定义文章类型差不多就好了,剩下的就是css样式了。

免责声明:
1、本站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
2、本站部分作品内容是由网友自主投稿和发布、编辑整理上传,对此类内容本站仅提供交流平台,不为其版权负责,更不为其观点承担任何责任。
3、因行业及专业性有限,故未能核验会员发布内容的真实性及有效性,不为其负责,如有虚假或违规内容敬请准备材料图片发邮件到info@n360.cn举报,本站核实后积极配合删除。
4、如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时处理或删除。
 
打赏
 
更多>同类网站技术
0相关评论

推荐图文
推荐网站技术
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  免责声明  |  版权隐私  |  信息发布规则  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2020081222号
Powered By DESTOON