在这个简短的教程中,我们将了解wordpress主体类以及如何使用核心api调用来操作它。
具体来说,我们涵盖了添加主体类、删除主体类、有条件地添加主体类以及一些用例。
本教程使用一些简单的php — 如果您对使用 WordPress 编程语言没有信心,请尝试我们的免费初学者课程 学习 PHP for WordPress 以加快速度。
body类:它可以用来做什么?
WordPress 中的 body 类是应用于html正文元素的一个类或一系列类。这对于将独特的样式应用于 WordPress 站点的不同区域很有用,因为 body 可以有条件地添加类。
WordPress 包含许多 本文介绍的默认正文类。
添加到 Body 类
我们有几种方法可以在 WordPress 中添加新的 body 类。本教程将介绍 使用该 函数在主题(通常在header.phpbody_class中定义)中添加主体类 以及使用过滤器添加类。
编辑主题:传递 Body Class 值
这是添加主体类的一种非常简单的方法,并且在您创建主题时特别有用。body 类通常使用以下代码包含在主题中:
<body <?php body_class(); ?>>
要将您自己的类添加到此,您可以将参数传递给函数,如下所示:
<body <?php body_class( 'my-class' ); ?>>
my-class 这将在您的 WordPress 网站的每个页面上添加一个 body 类 。
WordPress 中的默认静态和动态正文类
类通常被添加到任何元素中,以使用css 设置样式或使用javascript操作其内容。
WordPress 中的 body_class() 功能通过自动将一堆适当的类添加到我们网站的 body 标签中,使我们非常容易做到这一点。
一个这样的例子 logged-in是如果登录用户正在查看页面,则添加到 body 标记的类。如果已注销的用户正在查看该页面,则该类logged-in将不会添加到正文中。
类似地,如果用户正在查看特定类型的页面,其他类(如 category、 archive、 search和tag)会自动添加到标签中。body这允许您根据页面类型有选择地设置页面内容的样式。
该 body_class()功能还添加了一堆类,可用于定位特定标签或类别的存档页面等内容。例如,假设您的网站在“教程”类别下提交了一些帖子,而在“提示”类别下提交了其他帖子。如果您访问教程类别的存档页面,您会看到它的主体标签还包含诸如category-tutorial. 这些动态类允许您针对非常特定的样式定位页面和帖子。
如果您打算向body 标签添加一些类以定位这些类型的帖子和页面,那么使用默认添加的类可能会更好。WordPress 文档中提到了 WordPress 添加的所有此类类。
添加多个正文类
有时您可能想要添加多个身体类别。这可以使用一个简单的数组来实现:
<body <?php body_class( array( "class-one", "class-two", "class-three" ) ); ?>>
这将获取数组中的所有类并将它们传递给body_class 函数。
有条件地添加一个正文类
您可能还想有条件地添加一个 body 类。使用一些简单的 PHP,这很容易。此示例使用woocommerce条件方法 is_shop() :
<?php if ( is_shop() ) { body_class( 'is-woocommerce-shop' ); } else { body_class(); } ?>
注意:WooCommerce 已经基于此添加了一个类,因此请注意,这纯粹是一个示例。
上面的代码所做的是检查第一个函数是否返回 true。如果是 true,那么 body 类已is-woocommerce-shop添加到其中;如果不是真的,那么只显示默认的正文类。
通过过滤器添加正文类
也可以使用 WordPress 过滤器来添加正文类。此方法使主题代码保持清洁,如果您想从插件添加主体类,则特别有用。此代码可以进入主题的functions.php 或插件中。
add_filter( 'body_class','my_body_classes' ); function my_body_classes( $classes ) { $classes[] = 'class-name'; return $classes; }
这会向数组添加一个类(或多个类,具体取决于您的实现)并返回整个数组。
通过过滤器添加多个主体类
要向过滤器添加更多类,只需添加另一行,将另一个值添加到数组中:
add_filter( 'body_class','my_body_classes' ); function my_body_classes( $classes ) { $classes[] = 'class-name'; $classes[] = 'class-name-two'; return $classes; }
通过过滤器有条件地添加正文类
条件也可以在过滤器中使用。以我们之前使用的相同示例,我们可以达到相同的效果:
add_filter( 'body_class','my_body_classes' ); function my_body_classes( $classes ) { if ( is_shop() ) { $classes[] = 'class-name'; $classes[] = 'class-name-two'; } return $classes; }
基于页面模板添加正文类
默认情况下,WordPress 会为您的页面模板添加一个 body 类,但如果您是前端开发人员并且有 CSS 的命名约定,那么您可能需要更改它。
例如,一个名为“halfhalf”的页面模板的 body 类为 page-template-page-halfhalf-php-not great。
所以让我们添加一个新类,使用过滤器和 WordPress 条件标签:
add_filter( 'body_class','halfhalf_body_class' ); function halfhalf_body_class( $classes ) { if ( is_page_template( 'page-halfhalf.php' ) ) { $classes[] = 'halfhalf-page'; } return $classes; }
halfhalf-page 如果页面模板是 page-halfhalf.php ,这将添加 body 类 。
删除正文类
您不太可能想要删除 body 类,因为您不会被迫使用它们,而且它们对您的标记添加的很少。也就是说,可以使用相同的 body_class 过滤器来做到这一点。
add_filter( 'body_class', 'remove_body_class' ); function remove_body_class( $classes ) { $remove_classes = ['custom-class', 'archive']; $classes = array_diff($classes, $remove_classes); return $classes; }
从 body 标记中删除一个或多个类的最简单和最快的方法是定义一组要删除的类。之后,简单地调用该 array_diff() 函数将返回一个新数组,其中包含删除我们指定的类后的完整类列表。
您不必遍历整个数组并一次取消设置一个类。 在我们的例子中,我们从 body 标签中删除了类 custom-class 和 。archive
就是这样,伙计们!
在这个小教程中,我们介绍了两种添加到 WordPress 正文类的方法:
通过使用body_class主题中的功能
通过使用过滤器
如果您在未来的开发中需要这样做,我们还介绍了有条件地添加主体类和删除类。
- 添加多个正文类
- 有条件地添加一个正文类
- 通过过滤器有条件地添加正文类
- 基于页面模板添加正文类