要在WordPress中为每个页面和每个类别创建样式表,您需要遵循以下步骤:
1. 首先,在您的WordPress网站管理中心中,导航到外观->编辑器。
2. 在编辑器中,找到您的主题中的style.css文件,这是您的主题的默认样式表。
3. 复制整个style.css文件的内容。
4. 创建一个新的CSS文件,命名为page.css。如果您希望为某个类别创建样式表,请用category-CATEGORYNAME.css命名,其中CATEGORYNAME是您的类别的实际名称。
5. 在page.css或category-CATEGORYNAME.css文件中,粘贴您刚刚复制的样式表内容。
6. 现在您可以在新的样式表中编辑和自定义页面或类别的样式。
7. 在您完成所有更改后,保存新的样式表。
8. 为了将新的样式表应用到每个页面或类别,请在页面或类别编辑器中将其添加为附加CSS。
在这里,您已经成功地为每个页面和每个类别创建了自己的样式表。现在,您可以根据各自的需求和喜好对它们进行编辑和自定义。
以下是具体的步骤:
用wordpress做网站时经常会需要子分类使用父分类模板,子分类文章页使用父分类文章页模板,不同分类使对应分类模板,或者多个分类共用一个模板,多个单页共用一个模板或者不同单页使用不同的模板,又或者让文章页和分类页一样,可以根据分类别名自动识别对应的文章模板。
虽然wordpress给了我们默认模板文件,但现实使用中却是远远无法满足我们的使用要求的!那么如何实现上面的提到的模板对应方法呢?首先我们要熟悉wordpress内定的文件结构规则,具体方法如下!
1、wordpress分类栏目指定自定义模板
a、category.php 默认分类模板
b、category-别名.php
分类别名实现不同分类使用不同模板,后台分类目录名称后有一个别名 ,系统会根据分类别名自动调用对应的模板(例:category-news.php )
c、category-id.php
分类id实现自定义模板 系统会根据分类id 自动获取与之对应的模板 。如果没有对应模板会调用默认模板 (例:category-2.php )
d、子分类页面使用父分类模板 ,在function.php中添加如下代码(例:新闻中:行业新闻,公司新闻公共一个模板)结合上面的 b方法 或者c方法 使用
add_filter('category_template', 'f_category_template'); function f_category_template($template){ $category = get_queried_object(); if($category->parent !='0'){ while($category->parent !='0'){ $category = get_category($category->parent); } } $templates = array(); if ( $category ) { $templates[] = "category-{$category->slug}.php"; $templates[] = "category-{$category->term_id}.php"; } $templates[] = 'category.php'; return locate_template( $templates ); }
2、wordpress多个分类共用一个模板与不同分类使用不同模板
根据分类别名或id判断实现,在默认分类文件category.php顶部添加如下代码
//如果分类别名为solution就调用category-case.php模板 <?php if ( is_category('solution') ) { include(TEMPLATEPATH . '/category-case.php'); } ?> //如果默认模板本来就有内容会同时输出category-case.php与默认模板的内容 解决方法如下 <?php if ( is_category('solution') ) { include(TEMPLATEPATH . '/category-cases.php'); }else{ ?> 默认模板的内容 <? } ?>
3、多个单页使用同一个模板与不同单页使用不同模板
page.php 默认单页模板
page-about.php 根据单页别名判断不同单页使用不同模板 (例:关于我们,单页别名:about)
page-id.php 根据id 联系我们模板 (联系单页别名:contact)
把我们自定义的单页模板顶部加如下代码, 之后我们可以在后台单页编辑的右侧,模板一栏选择我们的自定义单页模板了(任何单页都可以选择该模板了)
<?php /* Template Name: 关于我们模板 */ ?>
4、不同分类下的文章使用不同的文章页模板,多分类下文章使用同一文章页模板
4.1、根据分类别名判断在默认文章内容页模板single.php 添加如下代码
<?php //多个分类别名共用一个模板 if (in_category(array('themes','plugins','develop') ) ) { get_template_part('single-product' ); //不同分类名使用不同模板 }elseif ( in_category('themes')) { get_template_part('single-case' ); //其他调用默认模板 }else { get_template_part('single-default' ); } ?> 如果有子分类使用下面方法:子分类文章使用父分类文章模板 <? //获取该文章父分类id $typeid=(get_the_category())[0]->category_parent; //获取该文章父分类数据 $category = get_category($typeid); //该文章父分类别名 $category = $category->slug; //如果分类别名,或者父分类别名是product就选择single-product.php模板 if (in_category(array('product')|| $category == "product" ) ) { get_template_part('single-product' ); //如果分类别名是news就选择single-news.php模板 }elseif ( in_category('news')) { get_template_part('single-news' ); }else { //其他文章调用默认模板 get_template_part('single-default' ); } ?>
4.2、根据分类ID判断在默认文章内容页模板single.php 添加如下代码 (方法和上面一样,只是把分类别名改为了id)
//根据分类id判断 <?php if ( in_category(array( 2,3 )) ) {//多个分类id get_template_part('single-product' ); }elseif ( in_category( 7 )) {//单个分类id get_template_part('single-case' ); }else {//其他调用默认模板 get_template_part('single-default' ); } ?> 如果有子分类使用下面方法:子分类文章使用父分类文章页模板 <?php //获取父分类id $typeid=get_the_category(); $typeid=$typeid[0]->category_parent; if ( in_category(array(1)) || $typeid==1 ){ get_template_part('single-product'); }elseif ( in_category(3) || $typeid==3){ get_template_part('single-news' ); }else { get_template_part('single-news' ); } ?>
4.3、让文章页和分类页一样,可以根据分类别名自动识别对应的模板(分类别名为 new 内容页会自动使用 content-new.php 做为文章页模板)
<? $cat=get_the_category(get_the_id()); $name=$cat[0]->slug; //自动识别文章页别名 content-别名.php //如果没有对应的就调用content.php get_template_part( 'content', $name ); ?>
5、文章根据文章别名调用不同的模板
将下面的代码添加到当前主题的 functions.php 文件
/** * 不同分类使用不同的文章模板 * */ //定义模板文件所在目录为 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'; }elseif(file_exists(SINGLE_PATH . '/single.php')){ return SINGLE_PATH . '/single.php'; } endforeach; } //通过 single_template 钩子挂载函数