不满足于WordPress默认功能的站长们都会对WordPress强大的扩展功能感到好奇,进而尝试自己修改主题。对WordPress主题进行修改时,没有必要精通PHP,你需要的,只是一点基础的HTML知识和一些解决问题的常识。

下载一份WordPress主题文件的副本,保存,然后打开这些主题问题,根据下面的步骤以及WordPress手册中的说明逐步了解主题文件的运转以及修改方法。

这篇文章是关于WordPress你需要知道的100件事系列的一部分。

1.Widgets实现了(通常位于侧栏/页脚中的)内容/插件的拖拽功能

这是基本知识,不过的确还有人不知道什么是widget(小工具)或者如何使用widget。WordPress主题支持widget功能,如果你进入WordPress网站后台"外观"下的"小工具"选项,会看到所有支持拖放widget的版块。WordPress自带若干核心widget(比如页面、分类、标签、最近文章等),各种插件也有自带的widget。

2.一个WordPress主题可以有无限个支持widget的区域

Widget这个概念很简单,很多人也习惯于侧栏或者footer的widget小工具。你或许不知道的是,WordPress网站的各个部分都是支持widget的,你可以(字面意义)在任何位置上添加widget小工具,所添加的小工具数量也完全由你自己决定。关于实现WordPress多区域widget的具体方法,请参考这篇文章。

3.支持widget的区域可以是"有限制的"(针对特定条件或页面)

有时候你可能需要只在特定条件下显示widget。比如主页专用widget,或者特定文章/分类/标签页专用widget。这时候你可以利用WordPress的条件标签。

在这种情况下,可以在functions.php里使用与注册多区域widget时相同的代码,不过之后需要在调用widget区域的代码内添加条件语句代码。仍然使用上一个例子,如果调用widget的区域是footer部分,并且你只需要在主页的footer上实现显示效果,需要用到的是下面这段代码:

if (is home() {
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Footer Widget') ) : ?>
} else {
}

4.WordPress3.0以上版本添加了自定义"菜单"功能(类似于widget,但为导航专用)

WordPress3.0版本引入了WordPress菜单(导航菜单)功能。。和widget一样,你也可以通过在functions.php文件注册菜单——添加到主题页面代码这样的步骤,在WordPress主题的任何部分添加菜单区域。同样你也可以"有条件地"显示菜单区域(方法同第3点)。

5.WordPress核心主题文件包括index.php,single.php,page.php,header.php,footer.php,style.css

有些WordPress主题结构非常复杂,有些却只包括几个文件。如果你有兴趣,可以进一步了解WordPress主题结构与工作机制。关于WordPress主题的结构解析,请参考这篇文章和这篇文章。

6.你可以自定义用于特定条件的header、footer和样式表

这仍然会用到WordPress条件标签。通过在WordPress主题代码里使用条件标签语句,可以在主题代码里创建并使用多个header、footer甚至样式表。

假设你希望主页的header部分不同于网站其他页面,只需要在index.php文件里加上:

if (is home() {
get_header(home);
} else {
get_header();
}

然后将header.php另存为header-home.php,进行相应代码添加或改动,然后上传到主题目录下即可。对footer、侧栏、样式表等也可以使用同样的方法。

下面是WordPress手册中对相关函数的介绍:

7.利用自定义主题页面"模板"可以显示特别的页面

你可以利用很多方法使某个页面看上去与众不同或者具有特别功能。也许你可能想要很多个与众不同的页面。你可以根据主题创建一个页面模板,然后在需要时把这个模板指派给某个页面。

步骤如下:

1.从主题文件中下载一份page.php文件,另存为page-test1.php(或者其他任何名字)。

2.在一个文本编辑器(例如Notepad)中打开这个文件,在文件顶部添加以下内容:

/*
Template Name: Test 1
*/
?>

然后保存文件并上传到主题目录下,之后你可以在后台编辑任何静态页面。在右侧的"页面属性"下可以看见一个叫做"模板"的下拉式菜单,如果刚才文件上传成功,你会看见一个叫做"Test1"的新模板。选中这个模板然后更新页面,页面重新加载后新的模板就派上用场了。

你可以为不同页面创建不同的主题页面模板,然后在后台匹配使用。

8.你可以设置主循环显示的文章数量

大多数WordPress用户都适应了一个事实:每个存档类型的页面(主页、分类页、标签页等)一次显示十篇文章。首先你需要知道的是(如果你还不知道),在所有主题页面中,"主循环(theloop)"是调用这些文章的代码主干。

你可能不知道的是,不用the_loop而用wp_query函数也可以显示任何类型的文章,例如:

//仅检索指定页面
$args = array(
'post_type' => 'page',
'post__in' => array( '595', '33', 44 )
);
$the_query = new WP_Query( $args );
?>
//显示某个作者的文章
$query = new WP_Query( 'author=123' );
//显示若干个作者的文章
$query = new WP_Query( 'author=2,6,17,38' );
//显示指定分类下的文章
$query = new WP_Query( 'cat=4' );
//显示指定标签下的文章
$query = new WP_Query( 'tag=cooking' );
甚至可以用wp_query来显示近期文章,例如:
$recentPosts = new WP_Query();
$recentPosts->query('showposts=3');
?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>

9.你可以设置每一篇文章(正文或摘要)的显示效果

每个包含the_loop的WordPres主题文件都通过特定函数分别调用文章的各部分内容。如果你看见functionthe_content,这表示要显示的是文章的完整内容。把其中的content改成excerpt,页面显示的内容会变成文章的摘要而不再是全文。

如果需要在主页上更改为显示摘要,就在index.php里把the_content改成the_excerpt。如果是存档页,就修改archive.php文件。如果要求搜索结果显示摘要,就修改search.php,以此类推。

10.做任何改动前一定要备份

不要害怕修改WordPress主题。不过做任何修改前,请在本地桌面上备份主题文件,然后进入后台"外观"菜单下的编辑选项慢慢研究吧。