如何将条件逻辑添加到您的 WordPress 主题
已发表: 2021-02-25使用 WordPress 构建网站可为您在设计和功能方面提供极大的灵活性。 而且,随着您对主题开发的深入了解,您会发现有时您需要针对特定页面、类别或帖子类型来定位特殊内容。 这就是条件逻辑可以使您的工作更轻松的地方。
条件逻辑是编程语言(在我们的例子中是 PHP)的一个强大特性。 本质上,我们可以使用代码检查某个条件是否存在,然后在满足该条件时执行特定的操作。 一个简单的例子是检查用户当前是否在我们网站的主页上。 使用条件逻辑,我们可能会选择在这种情况下加载滑块或其他特殊内容。
关于 WordPress,软件中内置了许多有用的条件标签,可以让我们测试各种场景。 它们有据可查,可让您为您的网站带来更高级别的功能。
今天,我们将看看一些更常用的条件标签,以及如何将它们实施到您自己的网站中。
使用条件标签的注意事项
条件标签是一些 PHP 代码,应该进入您网站的活动主题。 有很多地方可以在主题中使用条件逻辑。
如果您还没有这样做,最好熟悉 WordPress 模板层次结构,以了解主题文件的工作原理。
而且,在您尝试在实时站点上实现新代码之前,最好先设置一个开发(登台)环境来测试。 请记住,使用 PHP 的一个错误举动会给您的网站带来可怕的“死机白屏”。 因此,在实际站点上工作之前,请务必小心进行测试。
is_home()
这在开发人员中引起了极大的混乱。 通过查看标签,您会假设is_home()
将用于检查您网站的主页。 事实并非如此。
它实际上会查找分配为您的帖子页面的页面,该页面在 WordPress 仪表板内的设置 > 阅读中设置。 默认情况下,WordPress 使用您的主页来列出帖子——但大多数网站倾向于使用静态主页。
因此,例如,如果您指定了一个名为“Blog”的页面作为您的帖子页面,这就是is_home()
将查找的内容。
<?php // If this the Posts page, display a message. if ( is_home() ): echo '<h2>Thanks for visiting our blog!</h2>'; endif; ?>
is_front_page()
相反, is_front_page()
会查找设置为您网站主页的任何页面——无论它是否是静态的。 诚然,当您学习创建自己的主题时,这并不是世界上最明显的事情。 但是知道使用哪个标签至关重要。
这个特定标签的好处在于,即使您稍后要指定一个不同的页面作为您的主页,您仍然可以定位到正确的位置。 有更明确的方法来定位页面,但是这种方法可以让您在发生更改时保持覆盖。
<?php // If this is the home page, show a special message. if ( is_front_page() ) { ?> <h1>Welcome</h1> <?php // Otherwise, show the page title. } else { ?> <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?> <?php } ?>
is_single() 和 is_page()
这些标签中的每一个都执行双重功能。 is_single()
查看当前 URL 是否为帖子。 它可以是标准的博客文章、附件或属于自定义文章类型。
同样,如果当前 URL 是一个页面, is_page()
将返回 true。 默认情况下,这两个标签都针对属于页面或帖子的任何内容。 这是许多条件标签中的一个共同点。
<?php // Target all posts. if ( is_single() ): echo 'You are on a single post.'; endif; // Target all pages. if ( is_page() ): echo 'This is a page'; endif; ?>
但是您也可以通过添加 ID 或 slug 来利用这些标签来定位特定的帖子或页面。
<?php // Target About Us if ( is_page( 'about-us' ) ): ?> <a href="#"></a> <?php endif; ?>
使用数组将允许您定位多条内容。
<?php // Target About Us and Contact Us pages. if ( is_page( array('about-us', 'contact-us') ) ): ?> <a href="#"></a> <?php endif; ?>
is_tax() 和 has_term()
分类法在网站上的内容组织方式中起着重要作用。 最常见的两个是类别和标签——它们有自己的条件标签。 但 WordPress 也使我们能够创建自己的分类法。
例如,如果您的网站包含音乐评论,您可能有一个名为“流派”的分类。 从那里,您可以列出该分类中的特定音乐流派,例如“摇滚”、“嘻哈”和“爵士”。
is_tax()
以分类档案页面为目标。 继续我们的音乐评论示例,当我们在每个特定流派的存档页面上时,此标签将触发(生效)。
<?php // Display a message on our Genre archive pages. if (is_tax('genre','rock','hip-hop','jazz') ): echo '<h2>This is a genre archive. Enjoy!</h2>'; endif; ?>
has_term()
用于根据当前帖子所属的分类来定位当前帖子。 例如,如果我们想为网站上每种音乐类型的帖子添加特殊图形,这将非常有用。
<?php // Show an image for the Rock genre. if (has_term('rock','genre') ): ?> <?php endif; ?>
is_page_template()
熟悉主题的模板层次结构后,您可能希望创建自己的自定义页面模板。 is_page_template()
让您定位当前正在使用的页面模板(不管它是否是自定义的)。 您可以检查是否正在使用任何页面模板,或者查找特定的模板。
但是,在查找特定页面模板时必须小心。 由于此标记检查文件名是否存在,因此如果更改该模板的名称,条件可能会停止工作。 您必须更新代码以反映任何文件名更改。
<?php // Add a search form to the Services page template. if (is_page_template('services.php') ): ?> <?php get_search_form(); ?> <?php endif; ?>
满足所有条件
虽然这只是对如何使用条件逻辑的简要介绍,但它希望能激起您学习更多知识的兴趣。
一旦掌握了条件,您将能够以其他方式几乎不可能的方式自定义您的网站。
它们可以让您对主题的外观和布局进行细粒度控制,同时仍然受益于使用 CMS 的所有优势。