13个WordPress技巧和教程网站

WordPress即使不是世上最流行,那也是数一数二的开源博客和内容管理系统。有超过250万的网站和博客采用这款屡获奖项的网络软件。并且WordPress的潜在用户群也在日益扩张,他们中不乏开发者、设计人员、投稿人和自由作家这些独具技术和知识的群体。我自己的自由职业业务也有超过9成与 WordPress多少有关系,并且我发现为客户提供高质量、经济实惠的个性化的WordPress网站会快速增加我的业务。

在这篇文章中, 我为大家提供13个我经常去看一些技巧和教程的网站(排名不分先后)。我相信这些网站会增加你对WordPress的了解,让你使用起WordPress 来更得心应手。有些网站可能你已经知道,但是不管怎样,这些网站介绍的东西,让WordPress更加完美。

WordPress.org

显然要说这个网站。任何一个用WordPress的人都至少去过一次这里。官网提供了使用WordPress所需要的任何东西,包括提供服务支持的论坛——论坛包罗万象,从插件到模板什么都有。当然,Codex部分是定制WordPress站点最好的地方。

Digging Into WordPress

这个网站不仅是极有帮助的一本同名书籍《深入挖挖掘WordPress》(《Digging Into WordPress》)的官网,还是一个囊括从初级到高级,各种技巧和窍门的地方。每次我访问这里都能学到一些东西。

最新文章:

wpbeginner

这个网站对新手来尤其有用。当然也提供一些高级技巧和窍门。

最新文章:

WPengineer

专为WordPress提供相关技巧、新闻、插件、主题、教程和其他资源的相当不错的网站。

最新文章:

WPVibe

这是一个高质量的站点,不仅专注于发布主题、插件和发行版本的新闻,还提供编码方面的技巧和窍门等知识。

最新文章:

WordPress Tavern

很喜欢这个使用酒馆主题的优秀的资源站点(啤酒瓶和啤酒杯比比皆是)。和上面的网站一样,它也是介绍有关WordPress的技巧。

最新文章:

wplift

这个网站提供一些列的WordPress服务,从安装到托管再到主题设计。另外网站也致力于提供WordPres博客插件和主题方面的帮助、教程和测评。

最新文章:

WPSHOUT

这个关注WordPress发展的博客内容很全面,从基本主题设计到使用WordPress搭建CMS面面俱到。

最新文章:

WordPress Arena

WordPress免费资源、主题、方法、插件的等。这个网站已经发展成为我经常使用的手头资源。

最新文章:

WPRECIPES

各种趣闻!每天都有快速、清晰、简洁的WordPress建站方法。

最新文章:

WordPress Hacks

除了发布各种各样的WordPress主题,提供WordPress插件测评之外, 这个站点立足于涵盖Wordpress的整个周边世界,包括最新的WordPress技巧、新闻和使用方法。

最新文章:

Pro Blog Design

严格意义上来讲算不上WordPress资源站,但是这个网站上关于WordPress的文章很经典。

最新文章:

Justin Tadlock

Justin的网站里充满了关于WordPress的好东西,比如使用技巧和教程。我相信这其中的许多经常会用到。

最新文章:

WordPress Snippets

小型的、可搜索的代码段,可以帮助你构建不可思议的WordPress主题。WP Snippets最大的特点是直截了当。无需多言,尽情的享受Snippets吧。

Via:FreelanceFolder 编译:伯乐在线 本文链接:http://www.jobbole.com/entry.php/370

2010年最佳WordPress免费主题

WordPress是目前最受欢迎的博客平台,其中一个主要原因为每年都会有不少优秀的免费主题。优秀的主题是博客成功的一大元素,国外知名博客WDL根据主题的功能、设计精选了本年度最佳的免费WordPress主题(排名不分先后):

Shaken Grid

该主题非常完美,假如你需要建立一个图片站,不规则的排序更是让你的博客/网站独具一格。Shaken Grid使用了插件jQuery Masonry ,网站内容按照垂直排列,然后按照横向排列。

Imbalance

Imbalance是一个界面非常友好WordPress主题,基于jQuery架构,兼容任何浏览器和操作系统。该主题最适宜在线杂志或个人作品展示博客。

Boldy

Boldy是一个高品质的免费WordPress主题,亮点在图片幻灯片部分。

Mansion

Mansion是一个适合做图片站的免费的WordPress主题。它的主要特点是以缩略图形式展示每一篇日志。明显地,这是为做图片博客的人准备的。

Simplefolio

SimpleFolio是一个适合个人作品展示的WordPress主题,包括了blog等非常广泛的页面选项,它还包括一个头版滑块。

Blissful Blog

Blissful是一个兼容WordPress 3.0适合婚庆行业的WordPress主题。

Simplo

Simplo,顾名思义,是一个外观简洁的专业主题。Simplo主题使用方便容易上手,同时可以通过主题选项页面配置更改主题色调(提供六种色彩)。

Structure

Structure主题是采用样式添加的内容。它具有两色选择 – 白色版本和黑色版本。

AutoFocus+

AutoFocus+是一个简洁的WordPress主题,非常适合摄影爱好者架设自己的作品展示站。

Koi

Koi是一个艺术风格的WordPress主题,最合适个人博客。Koi还是 WordPress.com使用最多的WordPress主题之一。该主题支持WordPress 3.0 的自定义菜单和创建子主题等特点,而且仍向后兼容老版本的WordPress。

Skeptical

Skeptical主题允许在首页最新文章旁边设置显示“相关文章”,或者一个完整的侧栏。不仅如此,您还可以通过博客选项添加你的Flickr和展示三个值得关注的博客标签至页脚区域。

Peacekeeper

Peacekeeper是网站web2feel.com免费提供的适用游戏迷的WordPress主题。该主题包括一个3D动画图像滑块,Twitter,横幅广告,AdSense等。

来源:http://www.x-berry.com/best-free-wordpress-themes-of-2010

打造WordPress面包屑导航

面包屑导航(Breadcrumbs)是网页导航设计中一个标准设计模式,在网站浏览中非常有用。本教程介绍在WordPress中如何打造恰当、全面的面包屑导航,包括分类嵌套和页面嵌套。

当然已经有不错的WordPress插件来添加面包屑导航,但今天我将介绍这种古色古香的方式。

function get_breadcrumbs()
{
	global $wp_query;

	if ( !is_home() ){

		// Start the UL
		echo '<ul class="breadcrumbs">';
		// Add the Home link
		echo '<li><a href="'. get_settings('home') .'">'. get_bloginfo('name') .'</a></li>';

		if ( is_category() )
		{
			$catTitle = single_cat_title( "", false );
			$cat = get_cat_ID( $catTitle );
			echo "<li> &raquo; ". get_category_parents( $cat, TRUE, " &raquo; " ) ."</li>";
		}
		elseif ( is_archive() && !is_category() )
		{
			echo "<li> &raquo; Archives</li>";
		}
		elseif ( is_search() ) {

			echo "<li> &raquo; Search Results</li>";
		}
		elseif ( is_404() )
		{
			echo "<li> &raquo; 404 Not Found</li>";
		}
		elseif ( is_single() )
		{
			$category = get_the_category();
			$category_id = get_cat_ID( $category[0]->cat_name );

			echo '<li> &raquo; '. get_category_parents( $category_id, TRUE, " &raquo; " );
			echo the_title('','', FALSE) ."</li>";
		}
		elseif ( is_page() )
		{
			$post = $wp_query->get_queried_object();

			if ( $post->post_parent == 0 ){

				echo "<li> &raquo; ".the_title('','', FALSE)."</li>";

			} else {
				$title = the_title('','', FALSE);
				$ancestors = array_reverse( get_post_ancestors( $post->ID ) );
				array_push($ancestors, $post->ID);

				foreach ( $ancestors as $ancestor ){
					if( $ancestor != end($ancestors) ){
						echo '<li> &raquo; <a href="'. get_permalink($ancestor) .'">'. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</a></li>';
					} else {
						echo '<li> &raquo; '. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</li>';
					}
				}
			}
		}

		// End the UL
		echo "</ul>";
	}
}

下面的代码放在你想显示面包屑导航的位置:

<?php
if (function_exists('get_breadcrumbs')){
    get_breadcrumbs();
}
 ?>

CSS代码

下面的CSS代码仅仅是使面包屑导航链接行内显示的简单样式,完全可以按你想要的方式去设计。

ul.breadcrumbs {
	list-style: none;
	padding: 0;
	margin: 0;
	font-size:12px;
}
ul.breadcrumbs li {
	float: left;
	margin: 0 5px 0 0;
	padding: 0;
}

说明

这些代码做了什么?让我们从头开始解释吧。

  • 首先,如果是首页则不显示面包屑导航;如果不是首页则添加首页的链接;
  • 然后是一些列的判断语句,覆盖了所有可能出现的不同位置,一些语句已经不言自明,比如搜索、404页面、存档页;
  • 如果是一个分类,先获取分类ID,然后通过ID获取其上级分类列表,这里使用了WordPress提供的函数get_category_parents()
  • 如果是一篇文章,必须先获取所属分类ID,但方法和上面稍有不同。一旦获取了分类ID,就和上面一样添加文章标题即可。

页面导航链接稍微深入一些,但并不是很复杂:

  • 首先获取页面标题;
  • 然后获取页面的祖先并颠倒他们的顺序,借助WordPress内置的get_post_ancestors()函数可以轻松实现,下一行代码将当前页面添加到祖先数组中;
  • 最后使用foreach循环输出所有祖先,循环中的if语句确保最后一个祖先(即添加到数组中的当前页面)没有链接。

至此,完全可定制、有效的WordPress面包屑导航完成。

译者注

可以将上面的函数放在主题functions.php中,然后调用即可。例如在twentyten中添加面包屑导航,首先将上面的函数粘贴至functions.php文件中,然后在header.php文件中插入以下代码:

	</div><!-- #header -->
	<?php if (function_exists('get_breadcrumbs')){get_breadcrumbs(); } ?>
	<div id="main">

添加样式即可看到下面的面包屑导航:

WordPress面包屑导航

在twentyten主题中添加WordPress面包屑导航

我个人习惯于将一些比较简单的插件合并到funchtion.php文件中,即可以剔除不需要的功能和设置界面,又避免加载插件时从数据库中读写插件配置,一定程度上提高加载速度,也不会在数据库中残留乱七八糟插件参数配置。

WordPress文章缩略图使用详解

上一篇文章介绍了WordPress 3.0新默认主题twentyten中一个有趣的功能:使用用文章缩略图作为头部图片。本文译自WordPress开发成员Mark Jaquith写的New in WordPress 2.9: Post Thumbnail Images,介绍缩略图的设置和调用。

以下为译文

许多WordPress主题使用图片代表每篇文章,特别是一些杂志般布局的。图片可能只在首页显示,可能是独立的,或者放在摘要旁边。迄今为止,并没有标准化的方法来实现这个功能。很多主题需要用户冗长乏味的在自定义域中输入图片URL,图片通常需要手动裁切。从WordPress 2.9开始,主题作者可以轻松地开启缩略图选择界面,然后使用简单的
模板标签调用图片。

Featured_Image_in_WordPress_3

WP3中的特色图片

首先,在主题的functions.php中声明该主题支持缩略图功能,这将开启WP管理后台中的缩略图设置界面。

add_theme_support( 'post-thumbnails' );

上面的代码将在文章(Post)和页面(Page)两种内容模型中都开启缩略图选择界面,如果只想选择其一,可以添加参数:

add_theme_support( 'post-thumbnails', array( 'post' ) ); // Add it for posts
add_theme_support( 'post-thumbnails', array( 'page' ) ); // Add it for pages

添加所需的行到functions.php中即可。

下一步,指定缩略图尺寸,共有两个选项:等比例缩放和裁切。等比例缩放就是例如一张100×50图片,设定的大小为50×50,则此图片会被缩放成50×25。这种方式的好处是整张图片都能显示,缺点是生成的图片大小不一,有时是限宽的,有时是限高的。如果想把图片限定在某个宽度、高度不限的话,可以指定宽度,再指定一个绝不可能达到的高度,如99999。

set_post_thumbnail_size( 50, 50 ); // 50 pixels wide by 50 pixels tall, box resize mode

在第二个选项裁切模式中,图片将被裁切成匹配目标的纵横比,然后在精确地缩放至指定尺寸。好处是生成的图片大小一致,缺点是图片将被裁切(或从左右两边,或从上下)以适合目标尺寸的纵横比,被裁掉的部份无法显示在缩略图中。

set_post_thumbnail_size( 50, 50, true ); // 50 pixels wide by 50 pixels tall, hard crop mode

现在可以利用模板函数在主题中显示这些图片,这些函数应放到主循环中(译者注:作者根据2.9撰写此文,根据3.0默认主题的代码来看,不在主循环内也能使用这些函数调用缩略图)。

has_post_thumbnail()返回布尔值,表明当前文章是否有手动选的缩略图:

<?php
    if ( has_post_thumbnail() ) {
	// the current post has a thumbnail
    } else {
	the current post lacks a thumbnail
    }
?>

the_post_thumbnail()如果存在缩略图则输出缩略图:

<?php the_post_thumbnail(); ?>

这些是最基本用法,下面是一些高级用法。

假设你想在首页使用50×50硬裁切(hard-cropped)的缩略图,而在文章的永久链接页面使用400像素宽(不限高)的缩略图,指定额外的自定义尺寸即可,代码如下:

functions.php

add_theme_support( 'post-thumbnails' );

set_post_thumbnail_size( 50, 50, true ); // Normal post thumbnails

add_image_size( 'single-post-thumbnail', 400, 9999 ); // Permalink thumbnail size

home.php或者index.php的代码,取决于主题结构:

<?php the_post_thumbnail(); ?>

single.php代码:

<?php the_post_thumbnail( 'single-post-thumbnail' ); ?>

set_post_thumbnail_size()仅仅调用add_image_size( 'post-thumbnail' )——默认的文章缩略图“句柄”,但正如你所见可以添加额外的句柄来调用add_image_size( $handle, $width, $height, {$hard_crop_switch} );,使用的时候区分句柄即可the_post_thumbnail( $handle );

如果想要主题支持更早的WordPress版本,需要用function_exists()来阻止早期版本调用这些新函数:

if ( function_exists( 'add_theme_support' ) ) { // Added since 2.9
    add_theme_support( 'post-thumbnails' );
    set_post_thumbnail_size( 50, 50, true ); // Normal post thumbnails
    add_image_size( 'single-post-thumbnail', 400, 9999 ); // Permalink thumbnail size
}

警告:WordPress 2.9这个功能仅仅对新上传的图片有效,还不能对已存在图片调整大小,我正在考虑在未来版本中实现它(译者注:WordPress 3.0已经可以调整?)。如果你先前上传了缩略图,然后重新声明一个新的尺寸,那么在调用模板函数时将不能对这些先前上传的缩略图硬裁切,等比例缩放也将在浏览器中完成。作为临时的解决方案,Viper007Bond开发了一个插件回溯和创建丢失的缩略图尺寸:Regenerate Thumbnails

参考函数

WP每篇文章头部显示不同图片

WordPress从2.9开始引入Post Thumbnail这个以往要通过自定义域实现的功能,3.0中改为Featured Image,但是模板标签仍然沿用2.9。WordPress 3.0新的默认主题twentyten中也使用缩略图,只不过不是显示在文章里,而是作为顶部图片。如果没有选择大于940px×198px的图片作为缩略图的话,很不容易发现这个功能。

来看functions.php中这两处代码,第一处是激活缩略图功能,第二处则是设置缩略图大小。我们可以看到,缩略图的大小正好为头部图片的大小,看注释:将使用缩略图作为文章和页面的自定义顶部图片,前提所选择的图片必须宽于940px、高于198px,这样才能裁切成940px×198px的缩略图。

// This theme uses post thumbnails
add_theme_support( 'post-thumbnails' );
// The height and width of your custom header. You can hook into the theme's own filters to change these values.
// Add a filter to twentyten_header_image_width and twentyten_header_image_height to change these values.
define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyten_header_image_width', 940 ) );
define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyten_header_image_height', 198 ) );

// We'll be using post thumbnails for custom header images on posts and pages.
// We want them to be 940 pixels wide by 198 pixels tall.
// Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );

在主题header.php文件中我们可以看到,只有缩略图的宽带大于等于funtions.php中定义常量的大小,头部才会显示文章缩略图,否则显示主题设置的图片。

<?php
// Check if this is a post or page, if it has a thumbnail, and if it's a big one
if ( is_singular() && has_post_thumbnail( $post->ID ) &&
	( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
	$image[1] >= HEADER_IMAGE_WIDTH ) :
	// Houston, we have a new header image!
	echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
else : ?>
	<img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
<?php endif; ?>
使用WP文章缩略图做头部图片

使用WP文章缩略图做头部图片

所以,如果想每篇文章顶部的图片都不一样,那记得选一张够大的图片作为缩略图(特色图片),既保持默认主题的简洁大方,又增添了一些趣味。当然也可以把这一功能延伸到别的主题中去,稍后我将翻译一篇WordPress开发人员撰写的关于缩略图使用的文章。

Global News-WP免费新闻类主题

“Global News”,顾名思义,这是一个报纸版面风格的WordPress主题,拥有所有典型的报纸新闻类网站的功能, InstantShift 设计, RapidXHTML 开发。主题的创意是设计一个专注于内容和图片WordPress新闻类网站主题,典型的报纸风格设计。后台有很多设置选项以及widget支持,用户使用过程中更具灵活性。

主要特点

  • 时尚、优美的网页字体应用(对中文来说没有意义)
  • 无表格设计,完全基于CSS布局
  • 三栏固定宽度设计
  • 通过XHTML 1.0 Transitional、CSS 2.1验证
  • 支持Widget
  • 注释良好的CSS和PHP文件,便于灵活定制
  • 多浏览器兼容,通过遵循w3c标准的浏览器测试
  • 显示每个栏中中的最新文章
  • 画廊高亮显示推荐文章

截图

Global News-A Free WordPress News Theme

滚动新闻

Global News-A Free WordPress News Theme

评论界面

Global News-A Free WordPress News Theme

文章选项

演示、下载

修改WP caption短标签输出代码

在WordPress后台中,我们如果从自带的媒体库中插入图片,且图片标题(caption)不为空时,WordPress会创建[-caption]这个标签,在编辑器的代码视图中,将会出现类似的代码(注:为禁止程序 解析而加入短标签中的-):

从WP媒体库中插入图片

从WP媒体库中插入图片


[-caption id="attachment_28" align="aligncenter" width="480" caption="IIS中的URL Rewrite模块"]<a href="http://static.csspod.com/images/2010/08/URL-Rewrite-on-IIS.jpg"><img class="size-full wp-image-28" title="URL Rewrite on IIS" src="http://static.csspod.com/images/2010/08/URL-Rewrite-on-IIS.jpg" alt="IIS中的URL Rewrite模块" width="480" height="334" /></a>[/-caption]

前台输出对应的代码为:

<div id="attachment_28" class="wp-caption aligncenter" style="width: 490px">
	<a href="http://static.csspod.com/images/2010/08/URL-Rewrite-on-IIS.jpg">
		<img class="size-full wp-image-28" title="URL Rewrite on IIS" src="http://static.csspod.com/images/2010/08/URL-Rewrite-on-IIS.jpg" alt="IIS中的URL Rewrite模块" width="480" height="334" />
	</a>
	<p class="wp-caption-text">IIS中的URL Rewrite模块</p>
</div>

[-caption]短标签函数位于wp-includes目录里的media.php文件中701-741行(WP3.01),代码如下:

add_shortcode('wp_caption', 'img_caption_shortcode');
add_shortcode('caption', 'img_caption_shortcode');

/**
 * The Caption shortcode.
 *
 * Allows a plugin to replace the content that would otherwise be returned. The
 * filter is 'img_caption_shortcode' and passes an empty string, the attr
 * parameter and the content parameter values.
 *
 * The supported attributes for the shortcode are 'id', 'align', 'width', and
 * 'caption'.
 *
 * @since 2.6.0
 *
 * @param array $attr Attributes attributed to the shortcode.
 * @param string $content Optional. Shortcode content.
 * @return string
 */
function img_caption_shortcode($attr, $content = null) {

	// Allow plugins/themes to override the default caption template.
	$output = apply_filters('img_caption_shortcode', '', $attr, $content);
	if ( $output != '' )
		return $output;

	extract(shortcode_atts(array(
		'id'	=> '',
		'align'	=> 'alignnone',
		'width'	=> '',
		'caption' => ''
	), $attr));

	if ( 1 > (int) $width || empty($caption) )
		return $content;

	if ( $id ) $id = 'id="' . esc_attr($id) . '" ';

	return '<div ' . $id . 'class="wp-caption ' . esc_attr($align) . '" style="width: ' . (10 + (int) $width) . 'px">'
	. do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>';
}

[-caption]输出的html中,容器div用内联样式设定了宽度,值为图片宽度加10px,之所以多出来10px,是因为默认主题中的样式为容器内的图片左右设置了5px的边距:

#content .wp-caption img {
margin: 5px 5px 0;
}

个人觉得没有必要设置容器的宽度,网上也有人不喜欢这多出来的10px。当然,今天写这篇文章的原因不是因为这10px,CSSPod近期将投入使用的主题将使用HTML 5,所以我想把[-caption]输出的html用<figure>、<figcaption>组合,使其更加语义化,贴近HTML 5,此文应运而生。(题外话:WordPress 3.0的默认主题已经将Doctype改为HTML 5,不过也就仅此而已,正如国内部分网站自称使用HTML 5,其实也就改了一下Doctype,连语法都没有改变,更不用说新元素的应用了。)

正如上面提到,不是所有用户都想要[-caption]默认的输出内容,对于一些很个性化的主题,默认输出的代码并不适合;或者有的用户想使用lightbox之类的图片浏览插件,想在代码中加入相关钩子,等等。基本上有三种方式来修改输出内容:

  • 扩展CSS并隐藏自动创建的div:可以立即排除此法,因为只有在有样式时才有效,而且代码标记仍然不巧当地存在;
  • 插入图片后手动删除或者添加HTML代码:这也很麻烦,有时可能忘记操作,而且耗费无谓的时间和精力让人颇不爽;
  • 通过插入钩子及过滤器调整所需输出代码。

下面我们就按照第三种思路,使用一点PHP来实现输出代码修改,需要重申的是,方法有很多种,至于选择哪一种,还是根据自己的需求而定。

插入的时候删除

通过返回真的函数添加disable_captions过滤器,以下代码可以放在插件中,或者放在主题functions.php中。

插入图片时删除caption短标签

插入图片时删除caption短标签

add_filter( 'disable_captions', create_function('$a', 'return true;') );

过滤输出代码

可能有的用户并不想直接在插入编辑器的时候就移除短标签,而是想在主题中根据页面需要输出或不输出包裹图片的div。

img_caption_shortcode($attr, $content = null)

The Caption shortcode.

Allows a plugin to replace the content that would otherwise be returned. The
filter is ‘img_caption_shortcode’ and passes an empty string, the attr
parameter and the content parameter values.

The supported attributes for the shortcode are ‘id’, ‘align’, ‘width’, and
‘caption’.

引用文件的是官方对这个函数的说明,我们可以通过一个函数让短标签在前台不生成div标签。

add_filter( 'img_caption_shortcode', create_function('$a, $b, $c', 'return $c;'), 10, 3 );

同样可以放在主题functions.php中,或者放在插件里,这样前台就没有生成的div标签了。

这个过滤器可以结合条件语句使用,使过滤器只在特定页面激活。比如只有在首页的时候才激活过滤器:

if ( is_home() )
	add_filter( 'img_caption_shortcode', create_function('$a, $b, $c', 'return $c;'), 10, 3 );

返回指定的HTML

有的时候,我们需要的不仅仅是删除多余的代码,而是希望按自己的需求输出代码。以CSSPod为例,我需要输出一个以HTML 5新元素、包裹的图片和标题组合,同时移除内联的样式。最终前台预想的代码为:

<figure id="attachment_28" class="wp-caption aligncenter">
	<a href="http://static.csspod.com/images/2010/08/URL-Rewrite-on-IIS.jpg">
		<img class="size-full wp-image-28" title="URL Rewrite on IIS" src="http://static.csspod.com/images/2010/08/URL-Rewrite-on-IIS.jpg" alt="IIS中的URL Rewrite模块" width="480" height="334" />
	</a>
	<figcaption class="wp-caption-text">IIS中的URL Rewrite模块</figcaption>
</figure>

只需修改函数,复写默认的输出函数,代码如下(添加到插件或者主题functions.php中):

function csspod_img_caption_shortcode($attr, $content = null) {

	// Allow plugins/themes to override the default caption template.
	$output = apply_filters('img_caption_shortcode', '', $attr, $content);
	if ( $output != '' )
		return $output;

	extract(shortcode_atts(array(
		'id'	=> '',
		'align'	=> 'alignnone',
		'width'	=> '',
		'caption' => ''
	), $attr));

	if ( 1 > (int) $width || empty($caption) )
		return $content;

	if ( $id ) $id = 'id="' . esc_attr($id) . '" ';

	return '<figure ' . $id . 'class="wp-caption ' . esc_attr($align) . '">'
	. do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $caption . '</figcaption></figure>';
}

//Override default function
add_shortcode('wp_caption', 'csspod_img_caption_shortcode');
add_shortcode('caption', 'csspod_img_caption_shortcode');

为保证IE9以下版本能识别HTML 5的新元素,使用条件注释引入下面的脚本(放在functions.php中,也可以在主题header文件中直接加入):

function ltIE9_script() {
	echo "<!--[if lt IE 9]><script type='text/javascript' src='http://static.csspod.com/lib/html5.js?ver=1.5.1'></script><![endif]-->\n";
}
add_action('wp_head', 'ltIE9_script');

关于这个脚本参见HTML5 enabling scriptIE Print Protector。此外,我们可能还需要为新引入的HTML 5元素定义样式。

禁用WordPress自动保存及版本修订

WordPress有许多令人称道之处,但个别功能对于单人博客略显多余,有时还会让人心生厌烦,自动保存(Auto Save)和修订历史(Post Revisions)就是这样的。

禁用自动保存

自动保存这个功能出发点是好的,只是自动保存的频率过高,有时还会出错,保存不成功或者同一篇文章保存了两次。我基本上是在记事本上写完大概的内容才到后台编辑,这个有点鸡肋的功能理所当然禁用。

方法1:修改源代码

WordPress安装目录的wp-admin文件夹里,找到并注销post.php、page.php、post-new.php、page-new.php四个文件中加载autosave脚本的函数:

    //wp_enqueue_script('autosave');

考虑到修改源文件和版本升级,此乃下下策,不用也罢。

方法2:Disable autosave插件

方法3:更改自动保存的时间间隔

在wp-config中定义一个常量,单位为秒,没人会一篇日志写10个小时吧。

define( 'AUTOSAVE_INTERVAL', 36000 );

方法4:主题function文件中添加撤销加载autosave脚本的函数

function disableAutoSave(){
	wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disableAutoSave' );

这个应该是最优的方法了,不用修改源文件,也不用额外的加载插件。

Post Revisions

类似Wiki的文章历史版本控制,对多人协同协作的博客也许是一个不错的功能,但对单人博客实属多余。

禁用Post Revisions

在wp-config中加入以下常量(与禁用自动保存的相似,也可以把这个常量加到主题的function文件中):

define('WP_POST_REVISIONS',false);

这个常量有几个可选参数

  • true(默认)或者-1:保存所有修订版本;
  • 0或者false:禁用版本修订;
  • 大于0的整数n:保存n个修订版本。

删除数据库中的修订版本

使用WP Cleaner插件,或者在phpMyAdmin等数据库管理软件中选中WordPress数据库后执行以下代码:

DELETE FROM wp_posts WHERE post_type = “revision”;

WordPress的开发者可能是替某些用户考虑,所以加入这两个功能,但为何不能替不需要这两个功能考虑一下,在后台加入相关选项呢?最后,在附上同时禁用自动保存和版本修订的插件disable-revisions-and-autosave.zip插件主页

P.S. 这篇文章有点新瓶装旧酒的感觉,不过迄今为止(3.01),WordPress后台仍没有相关选项,所以重新温习一样也无妨。