在 WordPress 中使用条件标签

已发表: 2012-12-27

让我们看看如何根据满足某些条件并返回“是”来在主题的不同挂钩位置中执行自定义函数。

如果您使用像 Genesis 这样的高级主题框架,您将可以访问用户指南。

用户指南通常包含包含自定义函数的代码片段。

注意:如果您没有使用高级主题框架,那么您需要自己创建自定义函数或找到适用于您的主题的代码片段。

这些自定义函数可以使用您的主题操作挂钩在特定主题位置执行。

您需要做的就是将代码片段粘贴到您的子主题 functions.php 文件中以自定义您的主题功能。

每个主题框架都使用不同的钩子,但是它们几乎做同样的事情,只是被赋予了不同的名称,例如:

 thesis_after_post genesis_after_post woo_post_after

这 3 个示例都在帖子完成后执行,您可能希望在其中添加小部件区域、横幅或电子邮件选择框以及社交共享/关注按钮。

但是,如果您只希望自定义函数根据某些条件在特定的挂钩位置执行怎么办? 例如:

  • 仅在单个帖子上:is_single()
  • 仅在特定类别的帖子上:is_category()
  • 仅在存档页面上:is_archive()
  • 仅在主页上:is_home()

将条件标记添加到在主题挂钩位置执行的自定义函数中,使您仅在条件返回“是”时才执行该函数。

注意:在将代码添加到实时站点之前,您可能希望在本地设置上使用自定义函数的代码片段测试这些标记。

一旦您习惯了使用自定义函数并了解主题操作挂钩的工作位置和方式,您就可以更进一步,使用一些开发人员称之为的条件标签或条件语句。

那么如何使用条件语句呢?

条件标记示例

以下是 WordPress 设计人员以及主题和插件开发人员使用的一些常见条件标签。

 is_home() is_category() is_single() is_page()

首先,让我们看看使用基于多个语句的条件标签。

is_single & in_category

 if (is_single() && in_category('134'))
 if (is_single() && in_category('web-design'))

这两个代码片段的作用完全相同,并且包含 2 个条件标签。

第一个使用 134 的类别 ID,第二个使用类别 slug 'web-design'。

您包含在此代码中的任何功能都只会在包含帖子 ID 134 或页面 slug 'web-design' 的类别中的单个帖子上执行。 这显然是网页设计类别。

参数

正如您在上面的示例中看到的,您可以使用带有条件标签的不同参数,例如:

  1. 帖子编号
  2. 帖子标题
  3. 后蛞蝓

像 is_home() 标记这样的一些条件标记不排除任何参数,可能是因为它们实际上并不需要任何参数。

is_page

 if (is_page('4289'))
 if (is_page('contact'))

这两个条件标签也做同样的事情。

第一个使用 4289 的页面帖子 ID,第二个使用页面名称和 slug 'contact'。

您包含在此标签中的功能只会在联系页面上执行。

主页条件标签

使用 is_home 标签最常见的用途是仅在主页上显示某些内容或将主页从功能中排除。

is_home

 if (!is_home()

此代码包含! 在 home_page 条件标记之前,因此它从函数中排除主页。

 if (is_home()

此代码创建仅适用于主页的条件。

工作示例

如果您使用代码编辑器将以下代码复制并粘贴到您的子主题函数文件中,您会发现它仅在单个帖子的标题后打印文本。

 add_action( 'genesis_entry_footer', 'add_content_after_single_posts' ); function add_content_after_single_posts() { if ( is_singular('post') ) { echo 'Content Added After Single Post Entry Footer'; } }

上面的代码使用带有is_singular('post')条件标签的genesis_entry_footer钩子位置,并且仅在单个帖子的内容之后打印文本。 这是一个经典示例,展示了如何在自定义函数中使用条件标签和主题操作挂钩。

带数组的条件标签

您还可以将数组添加到条件语句中。

is_page (数组

if (is_page(array('contact','37290'))

您可以将更多页面添加到此数组中,只需将它们包含在此数组中,用逗号分隔即可。

此功能只会在联系页面和包含帖子 id 为 37290 的页面上执行。

输出文本/HTML

如果你只是想显示一些文本或 HTML,你可以在你的主题动作钩子中添加一个条件语句。 最简单的方法是使用钩子插件将条件标签粘贴到您的 HTML 中。

 if ( ! is_home()) { echo'Your Text Here'; }

让我们使用一个带有动作钩子的通用函数并添加一个条件标签。

Genesis 中的条件标签

您可以轻松添加用于 StudioPress 主题的 Genesis 主题代码片段之一,并在代码中包含条件标记。

 /** Add custom body class to video category */ add_filter( 'body_class', 'add_body_class' ); function add_body_class( $classes ) { if ( is_category( 'video-tutorials' ) ) $classes[] = 'custom-class'; return $classes; }

此代码使用户能够使用自定义类设置视频类别页面的样式。

使用的参数是视频教程 slug,但是您可以在条件标签中使用 post.id 或标题。

论文中的条件标签

让我们从 DIY 主题用户指南中获取自定义函数并添加条件语句。

 function hide_nav_menu() { if(is_page ( 'contact-page' ) ) remove_action ( 'thesis_hook_before_header', 'thesis_nav_menu' ); } add_action ( 'thesis_hook_before_html','hide_nav_menu' );

这将仅隐藏联系人页面上的导航菜单。

我们可以为联系页面使用不同的参数,包括页面标签、帖子 ID 或页面名称。

把代码放在哪里?

如果您使用的是高级主题框架,您可以将代码粘贴到您的子主题 functions.php 文件中。

这些框架都提供了一个钩子插件或管理器,使您能够将代码粘贴到您希望根据条件标签执行代码的钩子位置。

  • 胡勾经理
  • 创世纪简单钩子
  • 论文、进展和 WordPress 钩子

显然,如果您使用挂钩管理器,则不需要在代码中包含操作挂钩。

另一种选择是将条件标签直接粘贴到您要根据条件执行功能的位置的主题模板文件中。 这不是最佳实践,因为更新主题时会丢失代码。

始终是创建子主题并在那里修改模板文件的最佳实践。 更好的是,使用您的主题开发人员已经创建的自定义函数,并将代码粘贴到带有条件标签的子主题函数文件中,一旦测试证明它有效。

WordPress 条件标签和示例

您将在 WordPress Codex 中找到所有 WordPress 条件标签的列表以及示例。

主题特定条件标签

一些高级主题还使用他们自己的条件标签,这些标签是其主题框架所独有的。

Woo Commerce 就是其中之一: 示例:

 is_woocommerce() - Returns true if on a page which uses WooCommerce templates is_product_category() - Returns true when viewing a product category archive is_checkout() - Returns true on the checkout page.

了解有关在 Woo Commerce 中使用条件标签的更多信息。

结论

使用提供大量由开发人员测试的代码片段的主题是一个巨大的好处。 通过这种方式,您可以选择 WordPress 提供的任何条件标签并将其添加到您的代码片段中,以任何您想要的方式自定义您的主题。