wordpress 网站可以有不同类型的页面,例如关于页面、联系页面、隐私政策页面、作者页面或主页。
有时,当我们在 WordPress 中开发主题、插件或实现一些其他功能时,确定当前页面是否是主页变得很重要。在本教程中,我们将确切地学习如何做到这一点。
什么是 WordPress 主页和首页?
主页是 WordPress 中一种特殊的页面类型。它指的是网站上的一个页面,其中包含您按时间顺序发布的所有博客文章的列表。
不要将这与 WordPress 2.1 中引入的静态首页的概念相混淆。静态首页的内容不一定是静态的。但是,它并不意味着包含所有博客文章的列表,如主页。
The appropriate options for setting a static page as the front page can be found by visiting Settings > Reading from the navigation in WordPress admin dashboard.
主页和首页的术语可能有点混乱。通常,我们将网站的主要 URL 称为其主页。例如,主页是https:/www.weixiaolive.com/。但是,这被认为是 WordPress 的首页。
WordPress 网站的主页和首页可以相同或不同,具体取决于设置。
在 WordPress 中使用is_home()和函数is_front_page()
您可以使用is_home()WordPress 中的功能来确定当前页面是博客主页还是列出所有博客文章的页面。它将按时间顺序显示您网站的所有博客文章。
使用上一节中的屏幕截图作为参考,该is_home()函数将为 URL website.com/blog/返回 true 。设置中的主页选项是指博客主页,而不是网站的主 URL。
您需要使用该is_front_page()功能来确定您当前是在首页还是在website.com等网站的主 URL 上。在我们的示例中,首页或主要网站 URL 的内容将与商店页面相同。
通过牢记以下几点,您可以避免对这两个功能的任何混淆:
当您位于 website.com 等网站的主 URL 时,该功能is_front_page()将始终返回。true如果您使用主 URL 来显示一些静态内容或博客文章列表,这并不重要。该函数is_front_page()将false在所有其他页面上返回。
当您在显示博客文章索引的页面上时,该函数is_home()将始终返回。true它是网站的首页还是其他页面都没有关系。在其他任何地方调用is_home()总是会返回false。
一起使用is_home()_is_front_page()
根据您的设置,您可能需要使用is_home()和一起完成某些任务。is_front_page()
假设您在 WordPress 仪表板中选择了阅读设置,以便主页显示最新的博客文章,如上图所示。在这种情况下, 和 的值is_home()将is_front_page()是true网站的主要 URL,例如website.com。
<?php // When checking the main website URL with the homepage set to display Latest posts. if(is_home()) { // Executes } if(is_front_page()) { // Executes } if(is_home() && is_front_page()) { // Executes } if(is_home() || is_front_page()) { // Executes } ?>
如您所见,在这种情况下is_front_page()使用与使用没有什么不同。is_home()它们都将返回true主 URL 和false所有其他 URL。
现在,假设您设置了一个名为“产品”的静态页面,其 URL website.com/products/作为网站的首页,一个博客页面,其 URL website.com/blog/作为博客主页或博客索引页。
<?php // When checking the main website URL with the homepage set to be a static page if(is_home()) { // Doesn't execute } if(is_front_page()) { // Executes } if(is_home() && is_front_page()) { // Doesn't Execute } if(is_home() || is_front_page()) { // Executes } ?>
博客文章列表将显示在website.com/blog/页面上。在这种情况下,只会if执行第一个和最后一个块内的代码。
<?php // When checking the URL website.com/blog/ with blog set to be the posts page. if(is_home()) { // Executes } if(is_front_page()) { // Doesn't execute } if(is_home() && is_front_page()) { // Doesn't Execute } if(is_home() || is_front_page()) { // Executes } ?>
这些if块都不会对网站的任何其他页面执行。
假设您已将自己的自定义页面设置为博客主页或显示所有最新帖子的页面。如果您决定在帖子列表之前显示当前页面的标题,但前提是您不在主网站 URL 上,该怎么办?在这种情况下,您可以使用以下条件块:
<?php if(is_home() && !is_front_page()) { echo '<h1>'.single_post_title().'</h1>'; } ?>
以编程方式检查用户首选项
我们还可以检查与特定主页或首页设置相关的用户偏好。我们可以使用这个get_option()函数来做这个检查。
我们可以检查三个选项的值。它们是:show_on_front、page_on_front和page_for_posts。
调用返回的值get_option('show_on_front')是posts或page。
当此函数调用返回posts时,表示首页已设置为显示最新博文列表。换句话说,这意味着对is_home()和的调用is_front_page()都将返回true。
当调用get_option('show_on_front')返回page时,表示已将一个静态页面指定为网站的首页。现在调用 toget_option('page_on_front')将为您提供该静态页面的 ID。您还可以调用 以get_option('page_for_posts')获取用于显示最新博客文章的静态页面的 ID。
这是我网站上这三个调用的输出。获得静态页面的 ID 后,您可以访问有关它们的更多信息。
<?php // page echo get_option('show_on_front') // 342 echo get_option('page_on_front') // 134 echo get_option('page_for_posts') ?>
最后的想法
在本教程中,我们了解了 WordPress 中的两个重要功能is_home(),is_front_page()我们可以使用它们来检查我们当前是在博客文章页面还是网站的首页。我们了解了这两种类型的页面之间的区别,以及使用这两种功能执行检查如何帮助我们在非常特定的情况下执行某些代码。
发表评论