现在的位置: 首页 > 互联网络 > WP相关 > 正文

WordPress主题高级技巧

2010-04-04 21:29 WP相关 ⁄ 共 4760字 ⁄ 字号 暂无评论

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吧!

给我留言

留言无头像?