Languages: English • Français • Italiano • Tags 日本語 Türkçe • Português do Brasil • 中文(简体) • (Add your language)
条件标签函数可使用在模板文件中,用来决定当页面满足什么条件时显示某些内容。例如,你想在文章列表的上面显示一些文本,并且只想在主页上才这么做,使用is_home()条件标签,可以很容易的做到这点.
注: the close relation these tags have to WordPress Template Hierarchy.
条件标签会测试某个条件是否满足,并返回相应的TRUE或者FALSE,下面列出在何种条件下标签输出为TRUE。这些标签可以接受参数
注: 如果你使用一个静态页面作为首页(front page,见下文),该标签将应用到文章页面(posts page).
博客首页并且'设置 > 阅读 ->首页显示' 设置为 "最新文章", 或 '设置 > 阅读 ->首页显示' 设置为 "静态页面" 同时"静态页面"值为当前显示的页面时.返回true
注: 该标签在Version 2.5中增加.
This section refers to WordPress Pages, not any generic webpage from your blog.
There is no is_subpage() function yet, but you can test this with a little code:
<?php // Get $post if you're inside a function global $post; if ( is_page() && $post->post_parent ) { // This is a subpage } else { // This is not a subpage } ?>
You could add this function to your templates functions.php file:
function is_tree($pid) { // $pid = The page we're looking for pages underneath global $post; // We load this as we're outside of the post if(is_page()&&($post->post_parent==$pid||is_page($pid))) return true; // Yes, it's in the tree else return false; // No, it's outside };
and call is_tree('id') to see if the page is in the tree. In the example below is_tree('2') would replace "is_page('about') || $post->post_parent == '2'" inside the first if tag. Note that if you have more than one level of pages the parent page is the one directly above and not the one at the top of the tree.
If you need to test whether this is a particular page OR a child of that page (e.g. to present a different banner on different sections of a page-based site), get the parent page IDs from the back-end, then use code like this:
<?php if ( is_page('about') || $post->post_parent == '2' ) { $bannerimg = 'home.jpg'; } elseif ( is_page('learning') || $post->post_parent == '56' ) { $bannerimg = 'teaching.jpg'; } elseif ( is_page('admissions') || $post->post_parent == '15' ) { $bannerimg = 'admissions.jpg'; } else { $bannerimg = 'home.jpg'; // Fall-through } ?>
If you wish to test this numerous times it is advisable to create a function (is_cpage()) which can easily be maintained. For example, if is_subpage() is introduced in to wp, you can change your function in functions.php without having to change multiple uses.
Beginning with Version 2.5 this allows you to determine whether or not you are in a page template or if a specific page template is being used.
Note: Be sure to check your spelling when testing, "is" and "in" are a big difference.
See also is_archive() and Category Templates.
See also is_archive() and Tag Templates.
See also is_archive() and Author Templates.
See also is_archive().
<?php // Get $post if you're inside a function global $post; if ( empty($post->post_excerpt) ) { // This post has no excerpt } else { // This post has excerpt } ?>
Here are working samples to demonstrate how to use these conditional tags.
This example shows how to use is_single() to display something specific only when viewing a single post page:
if (is_single()) { echo 'This is just one of many fabulous entries in the ' . single_cat_title() . ' category!'; }
If someone browses our site by date, let's distinguish posts in different years by using different colors:
<?php // this starts The Loop if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2 id="post-<?php the_ID(); ?>"> <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"> <?php the_title(); ?></a></h2> <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small> <?php // are we showing a date-based archive? if (is_date()) { if (date('Y') != get_the_date('Y')) { // this post was written in a previous year // so let's style the content using the "oldentry" class echo '<div class="oldentry">'; } else { echo '<div class="entry">'; } } else { echo '<div class="entry">'; } the_content('Read the rest of this entry »'); ?> </div>
This example will display different content in your sidebar based on what page the reader is currently viewing.
<!-- begin sidebar --> <div id="sidebar"> <?php // let's generate info appropriate to the page being displayed if (is_home()) { // we're on the home page, so let's show a list of all top-level categories echo "<ul>"; wp_list_cats('optionall=0&sort_column=name&list=1&children=0'); echo "</ul>"; } elseif (is_category()) { // we're looking at a single category view, so let's show _all_ the categories echo "<ul>"; wp_list_cats('optionall=1&sort_column=name&list=1&children=1&hierarchical=1'); echo "</ul>"; } elseif (is_single()) { // we're looking at a single page, so let's not show anything in the sidebar } elseif (is_page()) { // we're looking at a static page. Which one? if (is_page('About')) { // our about page. echo "<p>This is my about page!</p>"; } elseif (is_page('Colophon')) { echo "<p>This is my colophon page, running on WordPress " . bloginfo('version') . "</p>"; } else { // catch-all for other pages echo "<p>Vote for Pedro!</p>"; } } else { // catch-all for everything else (archives, searches, 404s, etc) echo "<p>Pedro offers you his protection.</p>"; } // That's all, folks! ?> <form id="searchform" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <div> <input type="text" name="s" id="s" size="15" /> <input type="submit" value="<?php _e('Search'); ?>" /> </div> </form> </div> <!-- end sidebar -->
The Creating an Error 404 Page article has an example of using the PHP conditional function
isset()
in the Writing Friendly Messages section.
The Dynamic Menu Highlighting article discusses how to use the conditional tags to enable highlighting of the current page in a menu.
At times queries performed in other templates such as sidebar.php may corrupt certain conditional tags. For instance, in header.php a conditional tag works properly but doesn't work in a theme's footer.php. The trick is to put wp_reset_query before the conditional test in the footer. For example:
<?php wp_reset_query(); if (is_page('2') ) { echo 'this is page 2!'; } ?>