WordPress 本来是作为一个blog或者blog平台开发的。但是现在WordPress变得越来越强大,你可以用它创建任何类型的网站,并把它当作内容管理系统(CMS)。 在本文中,我将与你分享一些制作更好的WordPress主题的技巧。
WordPress条件标签(Conditional Tags)
条件标签(Conditional Tags) 在创建动态WordPress主题过程中非常有用。
你可以用它来控制显示什么内容、如何显示。下面是条件标签的一些应用:
突出动态菜单(Dynamic Highlight Menu)
这是我在 Best Web Gallery中用来创建突出动态菜单的。在第一个列表项中,如果是Home或者Category或者Archive或者Search或者Single,则添加class=”current” 到
标签, 这样将突出 “Gallery” 按钮。第二个列表项,如果是 名为 “about”的页,则添加class=”current”。
<ul id="nav">
<li<?php if ( is_home() || is_category() || is_archive() || is_search() || is_single() || is_date() ) { echo ''; } ?>><a href="#" mce_href="#">Gallery</a></li>
<li<?php if ( is_page('about') ) { echo ''; } ?>><a href="#" mce_href="#">About</a></li>
<li<?php if ( is_page('submit') ) { echo ''; } ?>><a href="#" mce_href="#">Submit</a></li>
</ul>
动态标题标签(Dynamic Title tag)
我再次利用条件标签在 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>动态内容(Dynamic Content)
如过你只想在第一页包含一个文件,下面是代码:
<?php if ( is_home() ) { include ('file.php'); } ?>
突出某个分类的文章(Feature post highlighting)
假设你想添加一个CSS到categoryID 2以突出这个分类的所有文章,你可以用下面的片断 。
<?php if ( in_category('2') ) { echo ('class="feature"'); } ?>
独特的单模板(Unique Single template)
假如你想使用独特的模板显示某个的分类的个别文章,你可以用 in_category 检查文章属于哪个分类然后使用独特的单模板。在你的默认单模板single.php中加入以下代码。如果文章在category 1,则用single1.php;如果在category 2则用 single2.php; 其它的用single_other.php。
<?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'); } ? >
独特类模板Unique Category template
如果你想用不同的分类模板展示特别的分类,将你的分类模板(Category template)另存为 category-2.php(文件名添加 “-” 和分类ID数 )。所以,category-2.php将用来显示categoryID 2,category-3.php将用来显示 categoryID 3, 等等。
在第一篇文章后显示Google AD
很多人问我如何在第一篇文章后面显示Google广告,其实很简单,只需要在循环中加一个变量 ($loopcounter) ,如果 $loopcounter小于或等于1,则加入 google-ad.php 代码。
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); $loopcounter++; ?> // the loop stuffs
<?php endif; ?>查询文章(Query Posts)
<?php if ($loopcounter <= 1) { include (TEMPLATEPATH . '/ad.php'); } ?>
<?php endwhile; ?>
<?php else : ?>
你可一用 query_posts 控制那些内容在循环中显示。它可以让你控制显示哪些内容、在哪显示、如何显示。你可以查询或者排除某些分类,你完全可以控制。下面我将介绍如何使用 query_posts 显示最新文章、特定文章以及如何排除特定分类。
显示最新文章(Display Latest 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>
显示特定文章(Display Feature Posts)
假设分类2(categoryID 2)是你的特定分类(Feature category),你想在边栏中显示五篇 Feature posts,把这些加入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>
排除特定分类(Exclude specific category)
你可以用 query_posts 排除特定分类不让它显示,下面的代码将排除分类ID2的所有文章(注意:ID数前面有个减号-):
<?php query_posts('cat=-2'); ?>
<?php while (have_posts()) : the_post(); ?> //the loop here
<?php endwhile;?>
?
自定义域(Custom Fields)
自定义域(Custom field )是WordPress最强大的功能之一 。你可以连同文章和摘要附加额外的数据和文字。在自定义域,你可以逐字地把 WordPress变成CMS入口。在Web Designer Wall,,我用自定义域显示文章图片并把它链接到文章。 首先在文章中添加自定义域。
把下面的代码加到循环中,以显示文章图片并附加文章链接。
<?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>
Tips: WordPress允许你创建/存储若干关键字(keys),关键字在文章中可多次使用。 我用同样的方法在 Best Web Gallery中创建了极具动态的模板,我用自定义域(Custom Fields)显示站点缩略图、工具图片 及URL。
WP页面列表(WP List Pages)
基于导航的目的,模板标签 wp_list_pages 一般用来在顶部(header)和侧边栏显示WP页面(Pages)列表 。下面我将介绍如何使用 wp_list_pages显示站点地图和子菜单。
站点地图(Site map)
把下面的代码放到你的站点地图页面模板(Page Template )中,为所有的页面生成一个站点地图(sample)(注意:我排除了pageID 12 ,因为page12 是我的站点地图页面,我不想让它显示):
<ul> <?php wp_list_pages('exclude=12&title_li=' ); ?> </ul>
?
动态二级页面菜单(Dynamic Subpage Menu)
如果当前页面有二级页面,把下面的代码加入sidebar.php 将输出二级页面菜单:
<?php $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
?
页面模板(Page Template)
如果你用WordPress作为基本的页面管理,你最好别遗漏页面模板( Page Template )功能。你可以自定义页面显示。
首先,你需要创建一个页面模板,然后你可以为页面指派特定模板。 下面是页面模板的结构 (ie. portfolio.php):
<?php /* Template Name: Portfolio */ ?>
<?php get_header(); ?> //the loop here
<?php get_footer(); ?>
当你撰写或编辑一个页面,注意右边菜单 “Page Template” 你可以看到可用的模板。
WordPress选项(WordPress Options)
管理面板中有许多内建的选项可以使你的站点更雅观,下面是一部分:
定义第一页(Custom Frontpage)
WordPress在第一页默认显示blog文章,如果你想用一个静态的页面 取代(ie. welcome or splash page) ,你可以在 Admin > Options > Reading设置。
Permalinks
WordPress默认用 www.yoursite.com/?p=123 f作为文章URLs, 这不是URL 对搜索引擎也不友好。你可以通过 Admin > Options > Permalinks更改 Permalinks 设置。我个人喜欢吧Permalinks设置为:/%category%/%postname%/
分类前缀(Category prefix)
WordPress默认的分类前置是 “category” (ie. yoursite.com/category/cat-name/)。在Category base (Options > Permalinks)键入”article” ,你分类的URLs 将变成:yoursite.com/article/cat-name/
想要更多?WordPress Codex一直是学习WordPress相关知识的最好地方。 感谢WordPress,快乐地blogging吧!