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.06.21

    WordPress不用插件创建自定义内容类型

    小百度已经给大家介绍了通过Custom Po…

  2. 没有图片

    2010.05.20

    CSS经典布局16例演示+下载

    近来蓦然也是开始学习CSS样式表了,这里转发…

  3. 没有图片

    2011.01.25

    用PHPMyAdmin批量替换MySQL内容的代码

    有时博客日志内容有些重复的内容需要批量替换成…

  4. 没有图片

    2010.05.21

    Discuz! X1 UC后台应用通讯失败的解决办法

    Comsenz 核心产品 Discuz! X…

  5. 没有图片

    2010.05.08

    与交通有关的几个值得一笑的标语

    群里618分享的几句话,觉得挺有意思,转发到…

  6. 没有图片

    2010.06.04

    效能备忘录简体中文绿色免费版

    效能备忘录是一款完全免费、美观易用、功能强大…

评论

还没有评论。

About

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