自定义模板Post|Page|Category
不同POST页面 一、文章形式post-formats 如果你的主题不支持文章格式,首先你需要在functio…
不同POST页面
一、文章形式post-formats
如果你的主题不支持文章格式,首先你需要在functions.php中添加如下类似代码让你的主题支持该功能,WordPress支持以下十个文章格式:
- Standard:只是一个普通的文章没有什么特别的东西。
- Aside:类似于一个facebook的更新。
- Link:链接到外部网站。
- Image:只是一个简单的图像,没有什么巨大的。
- Quote:引用。
- Status:一个简短的状态更新,类似于微博。
- Video:一个视频。
- Audio:音频文件。
- Chat:全文聊天或使用插件一个客舱。
(一)让主题支持特定的 Post Formats
1
|
add_theme_support( ‘post-formats’, array( ‘aside’, ‘chat’,‘gallery’,‘image’,‘link’, ‘quote’, ‘status’, ‘video’, ‘audio’ ) );
|
(二)添加文章形式到页面和自定义文章类型:
1
2
3
4
|
//add post-formats to post_type ‘page’
add_post_type_support( ‘page’, ‘post-formats’ );
// add post-formats to post_type ‘my_custom_post_type’
add_post_type_support( ‘my_custom_post_type’, ‘post-formats’ );
|
(三)修改发布类型名称
1
2
3
|
function rename_post_formats( $safe_text )
{ if ( $safe_text == ‘Aside’ ) return ‘Products’;if ( $safe_text == ‘Status’ ) return ‘Installation’; return $safe_text; }
add_filter( ‘esc_html’, ‘rename_post_formats’ );
|
(四)在文章主循环中使用(等级:经验丰富的)
1、Single页面调用方法
1
2
3
4
|
<?php if(have_posts()):while (have_posts()) : the_post();?>
<?php get_template_part( ‘template/content’, get_post_format() );?> //核心语句,可直接使用。
<?php endwhile; ?>
<?php endif; ?>
|
2、Woocommerce商城Single页面调用
1
2
3
4
5
6
7
|
<?php if (is_product()) : ?>
<?php
get_template_part( ‘woocommerce/single-product’);
else :
get_template_part( ‘content’, get_post_format() );
endif;
?>
|
现在,创建并且上传你的自定义格式循环文件到你正在使用的主题下,文件的命名应该为content-{post-format}.php,例如:content-video.php and content-audio.php
最后不要忘记添加一个content.php文件,因为这将作为刚才的自定义格式循环文件的默认文件,否则自定义文件不存在!
二、使用自定义single.php文件
(一)在functions中判断
如果你是一个新手,一个小白,并且不想去折腾那些烦人的循环,那么你就下面的这些吧,这些技巧将是对你有用的。我们将创建一个自定义音频文章格式,我们将给他命名为:single-video.php。
提示:你也可以直接复制你的single.php文件,并在上面做一些改变,然后作为你的自定义文章格式文件。
接下来,上传single-video.php到你的主题的根目录下面,并且添加如下代码片段到functions.php中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
add_action(‘template_include’, ‘load_single_template’);
function load_single_template($template) {
$new_template = ”;
// single post template
if( is_single() ) {
global $post;
// template for post with video format
if ( has_post_format( ‘video’ )) {
// use template file single-video.php for video format
$new_template = locate_template(array(‘single-video.php’ ));
}
}
return (” != $new_template) ? $new_template : $template;
}
|
(二)使用 in_category() 进行判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//判断是否栏目ID为特定一
<?php
if ( in_category(array( 25,26,27,33,36,37 )) ) :
get_template_part(‘content’,‘aside’);
elseif ( in_category(array( 8,6,10,32 )) ) :
get_template_part(‘content’,‘wordpress’);
else :
get_template_part(‘content’);
endif;
?>
//判断是否栏目ID为特定二
<?php
if ( in_category(array(8,9,10)) ) {
include(TEMPLATEPATH . ‘/single1.php’);
}
elseif ( in_category(array(1,2,3))){
include(TEMPLATEPATH . ‘/single2.php’);
}
else {
include(TEMPLATEPATH . ‘/single3.php’);
}
?>
//判断是否栏目ID为特定三
<?php
if ( in_category(array( 2,3 )) ) {
get_template_part(‘single001’ );
} elseif ( in_category( 7 )) {
get_template_part(‘single002’ );
} else {
get_template_part(‘single003’ );
}
?>
|
(三)根据模板文件名进行判断
1.将下面的代码添加到当前主题的 functions.php 文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/**
* 不同分类使用不同的文章模板
* From https://www.wpdaxue.com/custom-single-post-template.html
*/
//定义模板文件所在目录为 single 文件夹
define(SINGLE_PATH, TEMPLATEPATH . ‘/single’);
//自动选择模板的函数
function wpdaxue_single_template($single) {
global $wp_query, $post;
//通过分类别名或ID选择模板文件
foreach((array)get_the_category() as $cat) :
if(file_exists(SINGLE_PATH . ‘/single-cat-‘ . $cat->slug . ‘.php’))
return SINGLE_PATH . ‘/single-cat-‘ . $cat->slug . ‘.php’;
elseif(file_exists(SINGLE_PATH . ‘/single-cat-‘ . $cat->term_id . ‘.php’))
return SINGLE_PATH . ‘/single-cat-‘ . $cat->term_id . ‘.php’;
endforeach;
}
//通过 single_template 钩子挂载函数
add_filter(‘single_template’, ‘wpdaxue_single_template’);
|
2.在当前主题的根目录创建一个名为 single 的文件夹,然后根据不同分类创建不同的文件,命名格式为 single-cat-[分类别名或ID].php。请记得为所有分类创建自己的模板文件。
例如”WordPress主题“这个分类的别名为”themes“,ID 为 2,那就可以命名为 single-cat-themes.php 或 single-cat-2.php 。这样,只要是WordPress主题这个分类,就会自动选择 single-cat-themes.php 或 single-cat-2.php 作为这个分类的文章模板。
三、自定义文章类型(Post Type)
根据 WordPress 的模板调用规则 我们可以得知,我们只需要创建 single-[post_type].php
就可以实现该 Post Type 的文章自定义。当访问 Post Type,WordPress 会优先调用这些模板来渲染。
不同page页面
1
2
3
4
5
|
<?php
/*
Template Name: 联系我们
*/
?>
|
不同Category列表页
一、普通分类
根据 WordPress 的模板调用规则 我们可以得知,我们只需要创建 Category-[post_type].php
就可以实现该栏目的自定义列表页。
二、自定义文章类型(Post Type)
参考:https://vpura.com/2018/03/30/wp_jiaocheng/code/51/
文章类型归档模板:如果你需要一个现实所有该文章类型的模板,请在后台新建一个archive-{post_type}.php
,比如上面的book类型,新建archive-book.php
,用这个模板文件默认可显示所有book类型的文章。
分类模板:taxonomy-{taxonomy_slug}.php
-这是自定义分类法的分类页,比如上面代码中我们新建了一个分类法country,使用taxonomy-country.php
文件,就是这个分类法的分类页面了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
评论功能已经关闭!