博客换新颜

最近抽了几个晚上的时间,给自己的博客换了个主题。其实这个主题的psd在很久之前就请hana同学帮我设计好了,只是一直没抽出时间来实现。最近终于忙里偷闲,把它给实现出来了。用自己的主题的感觉很不错,哈哈。

其实做一个wordpress的主题并不难。我之前写过两篇关于wordpress主题的文章,WordPress主题制作WordPress模板制作,里面有个最简单的wordpress主题,很适合初学者学习,大家有兴趣的可以自己下载下来学习一下。

以前写的wordpress主题主要是用在公司网站上的,只是为了展示网站的内容,并没有用到所有的wordpress的功能,所以做的模板都很粗糙。做自己博客是用到了基本所有的功能,这才发现原来很多东西还真是蛮深奥的。

1. functions.php中可以定义各种函数,然后在主题的其他页面中调用。

2. query_posts() 函数非常重要,该标签可决定哪些文章出现在WordPress 主循环中,该标签可以接收大量参数。在主循环外的循环上使用query_posts会导致主循环运行偏差,并可能在页面上显示出你不希望看到的内容。详细的关于query_posts()的解释可以参见http://hi.baidu.com/fuyi_fly/item/db671f37d6559a9ab80c03a2,介绍的很不错。

3. 博客首页头部获取的是置顶文章,实现此功能,需要在提取文章主循环<?php if(have_posts()): ?>前面加如下代码:

 <?php
$sticky = get_option( ‘sticky_posts’ );
rsort( $sticky ); /* 对这些文章排序, 日期最新的在最上 */
$sticky = array_slice($sticky, 0, 4 );/* 获取5篇文章 */
query_posts( array( ‘post__in’ => $sticky, ‘ignore_sticky_posts’ => 1 ) );/* 输出这些文章 */
?>

4. 博客的分页我用的是wp_pagenavi插件来实现的。WordPress自带分页的功能,只能“上一页”或者“下一页”,文章比较多时,会造成很大的阅读障碍。wp_pagenavi的使用也很简单,插件里查找安装就可以了。然后在想加入分页的地方加入如下代码

<?php
if(function_exists(‘wp_pagenavi’)) { wp_pagenavi(); }
?>

我在使用的过程中发现分页总是被页面里的其他元素影响,所以在主循环<?php if(have_posts()): ?>前面又加入了如下代码来确保分页程序不出错。

<?php
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
query_posts(‘caller_get_posts=1&showposts=&paged=’. $paged); ?>

5. searchform.php中,method要用get,让搜索的?s=×××在地址栏里显示,这样可以保证在搜索后的翻页过程中参数不至于被被丢失。这个问题让我折腾了好久才明白怎么回事。

6. get_the_content()函数比wordpress内置的<?php the_content($more_link_text, $stripteaser); ?>要更加的灵活,处理起来也更加方便。

7. 从 WordPress 2.9 开始,WordPress 开始内置了日志缩略图的功能,并且提供了详细的接口让主题的作者设置和调用日志的缩略图。要开启wordpress的缩略图功能,需要在functions.php添加以下函数,

add_theme_support(‘post-thumbnails’, array(‘post’)); // 给日志启用日志缩略图
set_post_thumbnail_size(148, 92, true); // 设置缩略图的大小

新建thumb.php文件,代码如下:

<?php
$args = array(
‘post_parent’ => $post->ID,
‘post_type’ => ‘attachment’,
‘post_mime_type’ => ‘image’
);

$images = &get_children( ‘post_type=attachment&post_mime_type=image&post_parent=’ . $post->ID );
$imageUrl = ”;

if ($images) {
$image = array_pop($images);
$imageSrc = wp_get_attachment_image_src($image->ID);
$imageUrl = $imageSrc[0];
}else{
$imageUrl = get_bloginfo(‘template_url’) . ‘/img/jingxuan.jpg’; //默认的替代图片,在文章没有缩略图时使用
}
?>
<a href=”<?php the_permalink() ?>”><img src=”<?php echo $imageUrl; ?>” alt=”<?php the_title(); ?>” width=”148″ height=”92″ /></a>

在需要使用缩略图的地方,插入代码<?php include(‘thumb.php’);  ?>就可以了。

8. 最后是评论模块comments.php,里面有2部分,一部分是读取已经有的评论,并显示。另一部分是发表评论的表单。随便找一个做好的模板,把它的comments.php下载下来,然后对着自己设计好的模板修改就可以了。其中获取用户头像的代码如下:

<?php
$avatar_size = 46;
if ( ‘0’ != $comment->comment_parent )
$avatar_size = 46;
echo get_avatar( $comment, $avatar_size );
?>

大概就这么多吧,因为不是一下子做完的,所以中间遇到的问题也都忘的差不多了,只能总结这么多了。最近越来越发现,需要对自己的知识进行管理,要不自己都不知道自己知道些什么了。

贾定强微信

微信扫一下,或点击链接添加好友