当前浏览:首页 / WordPress函数 / is_page()

is_page( int|string|int[]|string[] $page = '' )

是否为现有的单个页面

is 条件判断more...

pagemore...


描述

如果指定了$page参数,此函数将另外检查查询是否针对指定的页面之一。

更多类似的主题函数信息,请查看主题开发手册中的条件标签文章。

另见


参数

$page

(int|string|int[]|string[]) (可选) 要检查的页面ID、title、slug或其数组。

默认值: ''


返回

(bool) 查询是否针对现有的单个页面。


说明

注意

  • 如果传递的是空值,将返回true
  • 由于某些全局变量在循环(Loop)过程中被覆盖,is_page()将无法工作。为了在循环之后调用它,你必须先调用wp_reset_query()


源码

查看源码 官方文档


更新日志

版本描述
1.5.0开始引入

使用示例

  • 示例1
    // 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' ) );
    
  • 示例2

    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
    }
    
  • 示例3

    分页页面测试

    您可以使用此代码来检查您是否在文章或页面的第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.
    }
    ?>
    
  • 示例4

    测试子页面

    目前还没有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”。

    请注意,如果您有多个级别的页面,则父页面是位于层次结构正上方的页面,而不是位于层次结构最顶端的页面。

  • 示例5

    只有在“setup_theme”钩子后才能使用它,否则将返回false。

  • 示例6

    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
    
  • 示例7

    测试自定义文章类型子页面

    $page = get_post();
    
    if ( is_singular('Custom_Post_Type_Name_Here') &amp;&amp; $page->post_parent > 0 ) {
        // This is a custom post type subpage
    } else {
        // This is not a custom post type subpage
    }