|
地板
楼主 |
发表于 2021-5-29 17:27:48
|
只看该作者
前端调用
模板命名
虽然很多人都会用自定义内容类型,但是内容类型的列表页不好做,即使做好,又该怎么放到菜单上显示出来,比如将 “电影” 列表页放在菜单中,自定义内容类型绑定了一个自定义分类法,又该怎么去显示分类法中某个分类下的文章,比如 “科幻片” 这个电影分类。
模板命名规则:
自定义内容类型 模板命名规则:archive-{post_type_name}.php 如 archive-movies.php
自定义分类法 模板命名规则:taxonomy-{taxonomy_name}.php 如 taxonomy-movie_type.php
自定义内容类型内容页 模板命名规则:single-{post_type_name}.php 如 single-movies.php
将内容类型加入到菜单,需要安装一个插件 “Custom Post Type’s Archive in WP Nav Menu”,安装好之后,没有任何设置界面,进入到 “外观-菜单”,你可以发现菜单编辑区域的左边有了一个custom post type archives ,现在内容类型就在这里了,如果你发现内容类型不在这,那就请到 pods 的内容类型管理界面的高级选项中确认你的 “拥有存档” 这个选项已经打上勾了。
注:可能由于缓存问题,如果发现添加了内容类型到菜单后,前台点击内容类型的菜单出现404页面,请到 “设置-固定链接”,点击一下保存即可。
数据调用
后台配置好,其实最主要的,还是要能够显示出来才是最重要的,pods 的显示方法有三种:
短代码方式显示,短代码请参考 pods 短代码文档,配合 pods 官方提供的 magic tags。
利用 pods 的 “page” 和 “template” 组件,这两个组件可在 pods 组件中开启,请参考文章。
利用模板函数,即将重点介绍。
这里只介绍模板函数方式调用 pods 数据,因为这才是做主题开发时能使用的东西。
输出函数
Pods 显示数据函数
pods_field_display ( $pod,$post->ID,'$field )
关于该函数的文档,请查看 pods 官方文档。
function pods_field_display ( $pod, $id = false, $name = null, $single = false )
参数 数据类型 备注
$pod (string) Pod name,即为 pods 机读名称
$id (mixed) (选填) 某篇文章ID或slug,以查询该篇文章数据
$name (string|array) 字段名称,或者关联数组的参数
$single (boolean) (选填) 是否以数组的形式返回
图像字段输出函数
pods_field_display() 不会真正的显示出一张图片,而是显示出图片的 URL,pods 特地为图片显示定义了一个函数:
pods_image ( $image, $size = 'thumbnail', $default = 0, $attributes = '', $force = false )
关于该函数的文档,请查看 官方文档。
function pods_image ( $image, $size = 'thumbnail', $default = 0, $attributes = '', $force = false )
参数 数据类型 备注
$image (array|int|string) 图片字段的数组,或ID,或guid
$size (string|array) 图片大小样式
$default (int) 如果图片不存在,则显示该图片$default
$attributes (string|array) 图片属性 (内部通过 wp_get_attachment_image获取)
$force (boolean) 强制规定大小
图片有单张图片和多张图片,如不清楚单张与多张,请到 pods 添加字段查看。如果字段是多张图片,那么会返回一个数组,所以,输出图像字段的代码为:
单张图片字段示例代码:
- <?php
- echo pods_image( get_post_meta( $post->ID, $image_field_name, true ), ’original’ );
- ?>
复制代码
多张图片字段:
- <?php
- $images =get_post_meta( $post->ID, ’images’);
- foreach ( $images as $image )
- {
- echo pods_image( $image, ’original’ );
- }
- ?>
复制代码
输出字段注意事项:
yes/no 字段:后台勾选 “是” 输出 1,不勾选输出空值。
Code 字段:可执行 php 脚本代码,输出 php 代码执行结果。
Website字段:本人无法输出该字段内容,请勿使用。
因为 pods 自定义字段也属于 WordPress 内部自定义字段,所以依然可以使用 WordPress 的 get_post_meta()输出,但是也并不是所有字段都能输出,经过测试,可直接使用 get_post_meta()函数输出的字段有:
Phone
Email
Password
Pptext
Date time
Pnumber
Currency
Color
对于其他字段,请使用 pods_field_display();
模板代码段示例
在主循环中
代码示例:
- <?php if(have_posts()) :while(have_posts()) : the_post(); ?>
- <h1>
- <a href="">
- <?php the_title(); ?>
- </a>
- </h1>
- <!--标题-->
- <div>
- <div>
- <span>年份:</span>
- <?php echo pods_field_display( 'movie',$post->ID,'time');//显示(年份)time字段 ?>
- </div>
- <div>
- <span>区域:</span>
- <?php echo pods_field_display( 'movie',$post->ID,'zone');//显示(区域)zone字段?>
- </div>
- <div>
- <span>时长:</span>
- <?php echo pods_field_display( 'movie',$post->ID,'how_long');//显示(时长)how_long字段 ?>
- <span>分钟</span>
- </div>
- <div>
- <span>海报:</span>
- <?php echo pods_image( get_post_meta( $post->ID, 'poster', true),'original'); //显示海报字段 ?>
- </div>
- </div>
- <!--显示自定义字段-->
- <div>
- <?php the_excerpt(); ?>
- </div>
- <!-- 内容摘要 -->
- <?php endwhile;endif; ?>
复制代码
万能循环示例代码
- <?php query_posts( 'showposts=5&post_type=movie');while(have_posts()) : the_post(); ?>
- <h1>
- <a href="">
- <?php the_title(); ?>
- </a>
- </h1>
- <!--标题-->
- <div>
- <div>
- <span>年份:</span>
- <?php echo pods_field_display( 'movie',$post->ID,'time');//显示(年份)time字段 ?>
- </div>
- <div>
- <span>区域:</span>
- <?php echo pods_field_display( 'movie',$post->ID,'zone');//显示(区域)zone字段?>
- </div>
- <div>
- <span>时长:</span>
- <?php echo pods_field_display( 'movie',$post->ID,'how_long');//显示(时长)how_long字段 ?>
- <span>分钟</span>
- </div>
- <div>
- <span>海报:</span>
- <?php echo pods_image( get_post_meta( $post->ID, 'poster', true),'original'); //显示海报字段 ?>
- </div>
- </div>
- <!--显示自定义字段-->
- <div>
- <?php the_excerpt(); ?>
- </div>
- <!-- 内容摘要 -->
- <?php endwhile;wp_reset_query(); ?>
复制代码
自定义设置页面(调用主题选项数据)
请注意 $id 参数为 pods-settings-{slug_name},比如我的 pods name为 theme_option,那么 $id 的实参应该为 ‘pods-settings-theme_option’。
- <?php echo pods_field_display('theme_option','pods-settings-theme_option','site_logo'); ?>
- <?php echo pods_field_display('theme_option','pods-settings-theme_option','site_title'); ?>
- <?php echo pods_field_display('theme_option','pods-settings-theme_option','site_keyword'); ?>
- <?php echo pods_field_display('theme_option','pods-settings-theme_option','site_description'); ?>
- <?php echo pods_field_display('theme_option','pods-settings-theme_option','site_tongji'); ?>
- <?php echo pods_field_display('theme_option','pods-settings-theme_option','site_beian'); ?>
复制代码 |
|