描述
如果指定了$page参数,此函数将另外检查查询是否针对指定的页面之一。
更多类似的主题函数信息,请查看主题开发手册中的条件标签文章。
另见
参数
- $page
-
(int|string|int[]|string[]) (可选) 要检查的页面ID、title、slug或其数组。
默认值: ''
返回
(bool) 查询是否针对现有的单个页面。
说明
注意
- 如果传递的是空值,将返回true
- 由于某些全局变量在循环(Loop)过程中被覆盖,is_page()将无法工作。为了在循环之后调用它,你必须先调用wp_reset_query()。
源码
更新日志
版本 | 描述 |
---|---|
1.5.0 | 开始引入 |
使用示例
// When any single Page is being displayed. is_page(); // When Page 42 (ID) is being displayed. is_page( 42 ); // When the Page with a post_title of "Contact" is being displayed. is_page( 'Contact' ); // When the Page with a post_name (slug) of "about-me" is being displayed. is_page( 'about-me' ); /* * Returns true when the Pages displayed is either post ID 42, * or post_name "about-me", or post_title "Contact". * Note: the array ability was added in version 2.5. */ is_page( array( 42, 'about-me', 'Contact' ) );
is_page()
也支持数组:if ( is_page( array( 'about-us', 'contact', 'management' ) ) ) { // either in about us, or contact, or management page is in view } else { // none of the page about us, contact or management is in view }
分页页面测试
您可以使用此代码来检查您是否在文章或页面的第n页上,或者使用
<!--nextpage-->
快捷标签将页面划分为多个页面。例如,如果您希望只在分为多个页面的文章的第一页上显示元数据,这可能很有用。示例1
<?php $paged = $wp_query->get( 'paged' ); if ( ! $paged || $paged < 2 ) { // This is not a paginated page (or it's simply the first page of a paginated page/post) } else { // This is a paginated page. } ?>
示例2
<?php $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : false; if ( $paged === false ) { // This is not a paginated page (or it's simply the first page of a paginated page/post) } else { // This is a paginated page. } ?>
测试子页面
目前还没有
is_subpage()
函数,但您可以用一些代码来测试这一点:代码段1
// If outside the loop. $post = get_post(); if ( is_page() && $post->post_parent ) { // This is a subpage } else { // This is not a subpage }
您可以使用代码段2中的代码创建自己的
is_subpage()
函数。将其添加到您的functions.php
文件中。它以与代码段1相同的方式测试父页面,但如果有,则返回父页面的ID,如果没有,则返回false。代码段2
/** * Check whether we are on a subpage * * @return mixed ID of the parent post or false if this is not a subpage. */ function wpdocs_is_subpage() { // Load details about this page. $post = get_post(); // test to see if the page has a parent if ( is_page() && $post->post_parent ) { // Return the ID of the parent post. return $post->post_parent; // There is no parent so ... } else { // ... The answer to the question is false return false; } }
如果您计划频繁测试子页面,建议使用类似代码段2中的函数,而不是使用类似代码段1的简单测试。
为了测试页面的父级是否是特定页面,例如“About”(默认情况下,页面id pid 2),我们可以使用代码段3中的测试。这些测试检查我们是否正在查看相关的页面,以及是否正在查看任何子页面。这对于设置特定于网站不同部分的变量非常有用,因此可以设置不同的横幅图像或不同的标题。
代码段3
<?php if ( is_page( 'about' ) || '2' == $post->post_parent ) { // the page is "About", or the parent of the page is "About" $bannerimg = 'about.jpg'; } elseif ( is_page( 'learning' ) || '56' == $post->post_parent ) { $bannerimg = 'teaching.jpg'; } elseif ( is_page( 'admissions' ) || '15' == $post->post_parent ) { $bannerimg = 'admissions.jpg'; } else { $bannerimg = 'home.jpg'; // just in case we are at an unclassified page, perhaps the home page } ?>
代码段4是一个函数,允许您更轻松地执行上述测试。如果我们查看相关的页面(即“About”)或其子页面之一(即ID为“2”的父页面),则此函数将返回true。
代码段4
/** * Check whether we are on a subpage * * @return mixed ID of the parent post or false if this is not a subpage. */ function wpdocs_is_subpage() { // Load details about this page. $post = get_post(); // test to see if the page has a parent if ( is_page() && $post->post_parent ) { // Return the ID of the parent post. return $post->post_parent; // There is no parent so ... } else { // ... The answer to the question is false return false; } }
将代码段4添加到
functions.php
文件中,然后调用is_tree( 'id' )
查看当前页面是该页面还是该页面的子页面。在代码段3中,is_tree( '2' )
将替换第一个if标记内的“is_page( 'about' ) || '2' == $post->post_parent
”。请注意,如果您有多个级别的页面,则父页面是位于层次结构正上方的页面,而不是位于层次结构最顶端的页面。
只有在“setup_theme”钩子后才能使用它,否则将返回false。
is_page()
可以通过以下方式使用:is_page(198); # (int) ID is_page('198'); # (string) ID is_page('Some Title'); # (string) Title, case-sensitive is_page('some-title'); # (string) Slug is_page( array( 198, 'Some Title', 'some-title') ); # (array) => ID, Title, Slug
测试自定义文章类型子页面
$page = get_post(); if ( is_singular('Custom_Post_Type_Name_Here') && $page->post_parent > 0 ) { // This is a custom post type subpage } else { // This is not a custom post type subpage }