转自:http://www.wordpress.la/10-things-to-know-about-theme-modification.html
不满足于WordPress默认功能的站长们都会对WordPress强大的扩展功能感到好奇,进而尝试自己修改主题。 对WordPress主题进行修改时,没有必要精通PHP,你需要的,只是一点基础的HTML知识和一些解决问题的常识。
下载一份WordPress主题文件的副本,保存,然后打开这些主题问题,根据下面的步骤以及WordPress手册中的说明逐步了解主题文件的运转以及修改方法。
这篇文章是关于WordPress你需要知道的100件事系列的一部分。
这是基本知识,不过的确还有人不知道什么是widget(小工具)或者如何使用widget。 WordPress主题支持widget功能,如果你进入WordPress网站后台"外观"下的"小工具"选项,会看到所有支持拖放widget的版块。 WordPress自带若干核心widget(比如页面、分类、标签、最近文章等),各种插件也有自带的widget。
Widget这个概念很简单,很多人也习惯于侧栏或者footer的widget小工具。 你或许不知道的是,WordPress网站的各个部分都是支持widget的,你可以(字面意义)在任何位置上添加widget小工具,所添加的小工具数量也完全由你自己决定。 关于实现WordPress多区域widget的具体方法,请参考这篇文章。
有时候你可能需要只在特定条件下显示widget。比如主页专用widget,或者特定文章/分类/标签页专用widget。 这时候你可以利用WordPress的条件标签。
在这种情况下,可以在functions.php里使用与注册多区域widget时相同的代码,不过之后需要在调用widget区域的代码内添加条件语句代码。 仍然使用上一个例子,如果调用widget的区域是footer部分,并且你只需要在主页的footer上实现显示效果,需要用到的是下面这段代码:
<?php // 只让主页的footer支持widget if (is home() { if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Footer Widget') ) : ?> <?php endif; ?> } else { }
WordPress 3.0版本引入了WordPress菜单(导航菜单)功能。 。 和widget一样,你也可以通过在functions.php文件注册菜单——添加到主题页面代码这样的步骤,在WordPress主题的任何部分添加菜单区域。 同样你也可以"有条件地"显示菜单区域(方法同第3点)。
有些WordPress主题结构非常复杂,有些却只包括几个文件。 如果你有兴趣,可以进一步了解WordPress主题结构与工作机制。 关于WordPress主题的结构解析,请参考这篇文章和这篇文章。
这仍然会用到WordPress条件标签。 通过在WordPress主题代码里使用条件标签语句,可以在主题代码里创建并使用多个header、footer甚至样式表。
假设你希望主页的header部分不同于网站其他页面,只需要在index.php文件里加上:
<?php if (is home() { get_header(home); } else { get_header(); }
然后将header.php另存为header-home.php,进行相应代码添加或改动,然后上传到主题目录下即可。 对footer、侧栏、样式表等也可以使用同样的方法。
下面是WordPress手册中对相关函数的介绍:
get_header
get_footer
get_sidebar
get_stylesheet
你可以利用很多方法使某个页面看上去与众不同或者具有特别功能。 也许你可能想要很多个与众不同的页面。 你可以根据主题创建一个页面模板,然后在需要时把这个模板指派给某个页面。
步骤如下:
1. 从主题文件中下载一份page.php文件,另存为page-test1.php(或者其他任何名字)。
2. 在一个文本编辑器(例如Notepad)中打开这个文件,在文件顶部添加以下内容:
<?php /* Template Name: Test 1 */ ?>
然后保存文件并上传到主题目录下,之后你可以在后台编辑任何静态页面。 在右侧的"页面属性"下可以看见一个叫做"模板"的下拉式菜单,如果刚才文件上传成功,你会看见一个叫做"Test 1"的新模板。 选中这个模板然后更新页面,页面重新加载后新的模板就派上用场了。
你可以为不同页面创建不同的主题页面模板,然后在后台匹配使用。
大多数WordPress用户都适应了一个事实:每个存档类型的页面(主页、分类页、标签页等)一次显示十篇文章。 首先你需要知道的是(如果你还不知道),在所有主题页面中,"主循环(the loop)"是调用这些文章的代码主干。
你可能不知道的是,不用the_loop而用wp_query函数也可以显示任何类型的文章,例如:
//仅检索指定页面 <?php $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来显示近期文章,例如:
<?php $recentPosts = new WP_Query(); $recentPosts->query('showposts=3'); ?> <?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?> <li></li> <?php endwhile; ?>
每个包含the_loop的WordPres主题文件都通过特定函数分别调用文章的各部分内容。 如果你看见function the_content,这表示要显示的是文章的完整内容。 把其中的content改成excerpt,页面显示的内容会变成文章的摘要而不再是全文。
如果需要在主页上更改为显示摘要,就在index.php里把the_content改成the_excerpt。如果是存档页,就修改archive.php文件。如果要求搜索结果显示摘要,就修改search.php,以此类推。
不要害怕修改WordPress主题。 不过做任何修改前,请在本地桌面上备份主题文件,然后进入后台"外观"菜单下的编辑选项慢慢研究吧。