WordPress Conditional Tags / WordPress 条件标签使用

在创建一款动态的 WordPress 主题过程中,条件标签非常有用。它允许你控制哪些内容将会显示、以怎么样的方式显示。下面是一些条件标签的示例:

动态高亮菜单

我在 Best Web Gallery 中使用了动态高亮菜单。假如当前页面是首页(Home)或目录页(Category)或存档页(Archive)或搜索结果页(Search)或单篇日志 页面(Single),class=”current” 属性将会自动加入到第一个列表条目的 li 标签中,它将会高亮显示“Callery”按钮;假如当前页面的缩略名是“about”时,class=”current” 属性将自动加入第二个列表条目的 li 标签中。

<ul id=”nav”>
<li<?php if ( is_home() || is_category() || is_archive() || is_search() || is_single() || is_date() ) { echo ”; } ?>><a href=”#”>Gallery</a></li>
<li<?php if ( is_page(‘about’) ) { echo ”; } ?>><a href=”#”>About</a></li>
<li<?php if ( is_page(‘submit’) ) { echo ”; } ?>><a href=”#”>Submit</a></li>
</ul>

动态 title 标签

又一个例子,我将使用条件标签在 header.php 中输出动态的 title 标签。

<title>
<?php
if (is_home()) {
echo bloginfo(‘name’);
} elseif (is_404()) {
echo ‘404 Not Found’;
} elseif (is_category()) {
echo ‘Category:’; wp_title(”);
} elseif (is_search()) {
echo ‘Search Results’;
} elseif ( is_day() || is_month() || is_year() ) {
echo ‘Archives:’; wp_title(”);
} else {
echo wp_title(”);
}
?>
</title>

动态内容

如果你想包含一个只在首页上显示的文件,使用下面的代码:

<?php if ( is_home() ) { include (‘file.php’); } ?>

高亮特定的日志

假设 ID 为 2 的目录是你的特别目录,你想添加一个 CSS 类使得该目录下的所有日志均高亮显示,那么你可以在 WordPress 的循环中使用下面的代码片段:

<?php if ( in_category(‘2’) ) { echo (‘class=”feature”‘); } ?>

唯一的单篇日志模板

假设你想使用不同的单篇日志模板(single.php)显示不同目录下的文章,你可以使用 in_category 函数来判断某篇日志处于哪个目录,然后调用不同的单篇日志模板。在默认的 single.php 文件中,敲入下面的代码,目录 1 的文章将使用 single1.php 模板,目录 2 的文章将使用 single2.php,其它文章将使用 single_other 模板:

<?php
$post = $wp_query->post;if ( in_category(‘1’) ) {
include(TEMPLATEPATH . ‘/single1.php’);

} elseif ( in_category(‘2’) ) {
include(TEMPLATEPATH . ‘/single2.php’);

} else {
include(TEMPLATEPATH . ‘/single_other.php’);

}
?>

唯一的目录模板

假设你想为不同的目录使用不同的模板,你只需要简单地将模板保存为以 category-2.php 这种形式命名的文件,category-2.php 用来显示 ID 为 2 的目录,category-3.php 用来显示 ID 为 3 的目录,依次类推。

在第一篇日志后显示 Google 广告

很多人向我询问如何实现在第一篇日志后显示 Google 广告,很简单,你需要在循环中使用一个变量 $loopcounter,当 $loopcounter 小于等于 1 时,添加 Google 广告代码文件:

<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); $loopcounter++; ?>

// the loop stuffs

<?php if ($loopcounter <= 1) { include (TEMPLATEPATH . ‘/ad.php’); } ?>

<?php endwhile; ?>

<?php else : ?>

<?php endif; ?>

调用日志

你可以在循环中使用 query_posts 来控制日志的调用,它允许你控制日志显示的内容、显示的位置、显示的方式。你可以调用或排除特定的目录,你有完全的权力来决定。下面我将演示如何使用 query_posts 显示最新日志列表、特定日志或排除特定的目录:

显示最新日志列表

下面的代码将显示最新的 5 篇日志:

<?php query_posts(‘showposts=5’); ?><ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href=”<?php the_permalink() ?>”><?php the_title(); ?></a></li>
<?php endwhile;?>
</ul>

显示特定日志

假设 ID 为 2 的目录是你的特别目录,你想在侧边栏中显示该目录下的 5 篇最新日志,那么把下面的代码写进 sidebar.php:

<?php query_posts(‘cat=2&showposts=5’); ?><ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href=”<?php the_permalink() ?>”><?php the_title(); ?></a></li>
<?php endwhile;?>
</ul>

排除特定的目录

你可以使用 query_posts 来排除显示特定目录的日志,下面的代码将排除 ID 为 2 的目录,请注意 ID 前面的负号:

<?php query_posts(‘cat=-2’); ?><?php while (have_posts()) : the_post(); ?>
//the loop here
<?php endwhile;?>

小技巧:你还可以使用 posts_per_page 参数指定每页显示的日志数:

<?php query_posts(‘posts_per_page=6’); ?>

自定义字段

自定义字段 Custom_Fields 是 WordPress 最强大的功能之一,它允许你为日志的内容或摘要附加额外的数据或文本。有了自定义字段,你可以自由地把 WordPress 变成一个 CMS 系统。在 Web Designer Wall,我使用自定义字段为每篇日志显示一张图片并链接至它。

首先要为日志添加自定义字段:
custom fields

再使用下面的代码调用图片并添加链接:

<?php //get article_image (custom field) ?>
<?php $image = get_post_meta($post->ID, ‘article_image’, true); ?><a href=”<?php the_permalink() ?>”><img src=”<?php echo $image; ?>” alt=”<?php the_title(); ?>” /></a>

小技巧:别忘了 WordPress 允许你为每篇日志添加多个自定义字段。

我在 Best Web Gallery 中使用了多个自定义字段调用站点缩略图,图片提示和链接地址。

WP List Pages

模板标签 wp_list_pages 通常用来显示导航页面列表,下面我告诉你如何使用它来显示站点地图和子菜单。

站点地图

为你的所有页面生成一个站点地图(示例),把下面的代码放进你的页面模板中(page.php),我排除了 ID 为 12 的页面,因为它就是站点地图页面本身,我不想把它也显示出来:

<ul>
<?php wp_list_pages(‘exclude=12&title_li=’ ); ?>
</ul>

动态的子页面菜单

把下面的代码放进 sidebar.php,它将显示当前页面的子页面,如果有的话:

<?php
$children = wp_list_pages(‘title_li=&child_of=’.$post->ID.’&echo=0′);
if ($children) { ?><ul>
<?php echo $children; ?>
</ul>
<?php } ?>

页面模板

如果你想用 WordPress 建立一个网页管理系统,你一定不能放过页面模板这个功能。它允许你自定义页面的显示方式。要使用页面模板,首先你得创建一个页面模板,然后给页面指定这个模板:

下面是页面模板的结构:

<?php
/*
Template Name: Portfolio
*/
?><?php get_header(); ?>
//the loop here
<?php get_footer(); ?>

当你编辑一个页面时,可以为它指定可用的模板:
Page Template

WordPress 选项

还有一些 WordPress 内建的选项可以让你的站点看上去更好,它们是:

自定义首页

默认情况下,WordPress 将会在你的首页上显示日志,但是你可以设置为一个静态页面或是欢迎页面,在 Admin -> Options -> Reading 中设置该选项:
FrontPage Option

永久链接

默认地,WordPress 日志的地址是类似于 www.yoursite.com/?p=123 的形式,它既不是 URL 又对搜索引擎不友好,你可以在 Admin -> Options -> Permalinks 中设置 Permalink 永久链接的形式。

目录前缀

WordPress 目录的默认前缀是 category,当你按照下图在 Options -> Permalinks 中输入 article 后,目录的前缀将变为 article。
Category Base
目录的 URL 也将从 yoursite.com/category/cat-name/ 变为 yoursite.com/article/cat-name/

想继续读?

WordPress Codex 是学习 WordPress 的最佳去处,感谢 WordPress!

落花生

认准了方向,就要勇敢地走下去,十年磨一剑,我相信,只要坚持,一切都有可能。

相关日志

  1. 没有图片

    2010.05.07

    日.月.春.秋

    秦国占春秋一半,明朝开日月成双。 这是从中国…

  2. 没有图片

    2010.05.31

    Clear – 最简洁的WordPress主题

    小百度一向最喜欢简洁的WordPress主题…

  3. 没有图片

    2010.10.08

    谷歌新Logo 纪念约翰·列侬诞辰

    谷歌今日放出了纪念The Beatles(甲…

  4. 没有图片

    2010.06.04

    WordPress 3.0 RC2 发布

    小百度每都在跟进WordPress官方的更新…

  5. 没有图片

    2010.05.26

    2010年北大BBS的牛句子收集

    看着大家转得挺火,菠萝也耐不住了,这些句子确…

  6. 没有图片

    2010.07.23

    PHPWind8 官方论坛升级,公测开始

    今晚忙完,就按老习惯去逛一下论坛,当打开ph…

评论

还没有评论。

About

马拉松运动员,沉迷于跑步;关注科技前沿,关注互联网!与跑者、程序员、设计师为伍,一起跑步健身,一起编写程序,为自由而战!