Tag: WordPress进阶

  • WordPress 3.3背景功能失效解决方案

    随着WordPress 3.3正式版的发布,很多盆友都在第一时间将程序升级到最新版,不过很快发现某些具备“背景”功能的主题(包括 HotNews主题)之前设置的背景失效了。

    WordPress早在2.8版就增加了自定义背景body_class()函数,直到3.0版才在默认主题中增加了“背景”功能,具备此功能的主 题也不是很多,可能大部分主题设计者会觉得这个功能有些鸡肋,简单通过修改CSS样式就可实现的功能,没有必要增加一次数据库查询,但这句 body_class()函数初衷,并不是为了简单更换整个站点所有页面的背景,而是方便设计人员灵活的控制不同页面中各个元素样式,大道理不说了,下面 说一下具体的解决方案:

    方案一 WordPress 3.3版在程序wp-includes目录theme.php中增加一个custom-background 标签,这是造成“背景”功能失效的问题所在,打开theme.php程序文件,在第1797行找到:

    body.custom-background { <?php echo trim( $style ); ?> }

    删除其中的 .custom-background 变为:

    body { <?php echo trim( $style ); ?> }

    此方法适合所有之前支持“背景”功能的主题,但需修改程序文件,不建议使用。

    方案二 这是标准的解决的方案,打开默认主题Twenty Eleven的header.php模版,你会发现有一句:

    <body <?php body_class(); ?>>

    代替了正常的<body>标签,这是关键,将上面的代码替换自己所使用主题header.php模板<body>标签即可。

    方案三 用

    <body class="custom-background">

    替换header.php模版<body>标签,不让其增加额外的标签,此方法方便实用,适合所有主题。

  • 批量删除自定义栏目

    WordPress自定义栏目(自定义域)功能强大,很多主题和插件通过添加自定义栏目来实现一些特殊功能和效果,比如我做的热点新闻主题也 大量使用了自定义栏目,来显示指定的图片和调用相关内容,还有比较常用的日志浏览统计插件WP-PostViews也会向数据库写入自定义栏 目:views,如果你没有正常卸载,也会留言在数据库中成为垃圾数据。特别是一些喜欢在自己网站上试用CMS类型主题和插件的童鞋,这些垃圾数据将会更 多,更有甚者,我试过一款国外的CMS主题,启用后竟然自动为每篇文章添加了10几项自定义栏目…如果你的文章较多手动删除这些自定义栏目不现实,其 实只要执行一句SQL命令,就可批量删除这些自定义栏目添加的数据表。命令为:
    DELETE FROM wp_postmeta WHERE meta_key = "自定义栏目名称";
    具体操作:

    登录你的phpMyAdmin数据库,点击上面的“SQL”。

    进入数据库查询页面,在其中输入上边的命令,并执行即可:

    执行该命令后,可以在自定义栏目下拉列表中查看刚才的命令是否将该自定义栏目名称删除了。

    提示:操作数据库有风险,请提前做好备份,以防万一。

  • 脱离插件,实现主题分页功能

    越少的使用插件,却能让使用者完全体验到主题的各项功能,才是真正好的主题,这也是所有主题设计者应考虑的问题。网上不使用插件实现WordPress功能的文章也很多,之前我也写过WordPress相关日志函数一文,今天再补一个不使用插件实现翻页功能的函数代码。
    WordPress默认翻页功能很弱,一页页翻,弄到你手麻,所以类似wp-pagenavi翻页插件,几乎是WordPress博客必装的插件,也是普及率很高的一款插件。虽然网上有如何把wp-pagenavi插件集成到WordPress主题的教程,但wp-pagenavi插件函数代码拖沓,只是变相启用插件而已,并没有真正脱离wp-pagenavi插件。下面一段轻量级的函数,加上寥寥数行css样式就可以完全替代分页插件了。

    具体实现方法:

    首先将下面一段函数代码添加到主题的functions.php模板文件中:

    function kriesi_pagination($query_string){
    global $posts_per_page, $paged;
    $my_query = new WP_Query($query_string .”&posts_per_page=-1″);
    $total_posts = $my_query->post_count;
    if(empty($paged))$paged = 1;
    $prev = $paged – 1;
    $next = $paged + 1;
    $range = 2; // only edit this if you want to show more page-links
    $showitems = ($range * 2)+1;

    $pages = ceil($total_posts/$posts_per_page);
    if(1 != $pages){
    echo “<div class=’pagination’>”;
    echo ($paged > 2 && $paged+$range+1 > $pages && $showitems < $pages)? “<a href=’”.get_pagenum_link(1).”‘>最前</a>”:””;
    echo ($paged > 1 && $showitems < $pages)? “<a href=’”.get_pagenum_link($prev).”‘>上一页</a>”:””;

    for ($i=1; $i <= $pages; $i++){
    if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
    echo ($paged == $i)? “<span class=’current’>”.$i.”</span>”:”<a href=’”.get_pagenum_link($i).”‘ class=’inactive’ >”.$i.”</a>”;
    }
    }

    echo ($paged < $pages && $showitems < $pages) ? “<a href=’”.get_pagenum_link($next).”‘>下一页</a>” :””;
    echo ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) ? “<a href=’”.get_pagenum_link($pages).”‘>最后</a>”:””;
    echo “</div>n”;
    }
    }

    接下来用下面的代码替换原来模板中默认翻页代码或分页插件代码:

    <?php kriesi_pagination($query_string); ?>

    最后再把下面的样式代码添加到style.css中,刷新一下页面,与使用插件实现的翻页效果一样。

    .pagination{
    line-height:23px;
    }
    .pagination span, .pagination a{
    font-size:12px;
    margin: 2px 6px 2px 0;
    background:#fff;
    border:1px solid #e5e5e5;
    color:#787878;
    padding:2px 5px 2px 5px;
    text-decoration:none;
    }
    .pagination a:hover{
    background: #8391A7;
    border:1px solid #fff;
    color:#fff;
    }
    .pagination .current{
    background: #fff;
    border:1px solid #8d8d8d;
    color:#393939;
    font-size:12px;
    padding:2px 5px 2px 5px;
    }

    上面的样式是我目前用的主题样式,根据不同的主题修改一下边框与背景,基本就可以了,之后删除分页插件。

  • 让WordPress主题随机显示缩略图

    之前本人的新作Hot News主题使用timthumb.php函数自动调整缩略图大小,并生成缓存文件,国外大部分CMS主题也都是采用此方法生成缩略图。但这一方法无法截取外链图片,这一致命弱点最终让我放弃使用timthumb.php函数。目前我使用的新版HotNews pro2.0采用比较普遍的显示缩略图的方法,添加自定义域,并通过CSS控制缩略图大小。有时文章中没有图片,也懒得特意作缩略图,虽然有默认占位图代替缩略图的位置,但文章发多了看着非常单调,也失去了缩略图吸引读者眼球的作用,于是忽随机显示默认缩略图的想法就出来了,下面请看具体的实现方法。
    一般 WordPress杂志型主题,都具备缩略图功能,采用的通用缩略图函数代码如下:

    <?php if ( get_post_meta($post->ID, ‘thumbnail’, true) ) : ?>
    <?php $image = get_post_meta($post->ID, ‘thumbnail’, true); ?>
    <a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”><img src=”<?php echo $image; ?>” alt=”<?php the_title(); ?>”/></a>
    <?php else: ?>
    <a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”><img src=”<?php bloginfo(‘template_directory’); ?>/images/img.jpg” alt=”<?php the_title(); ?>” /></a>
    <?php endif; ?>

    只需在默认占位图链接位置添加一句”rand()”函数就可随机调用特定目录下的多个图片,下面是修改后的:

    <?php if ( get_post_meta($post->ID, ‘thumbnail’, true) ) : ?>
    <?php $image = get_post_meta($post->ID, ‘thumbnail’, true); ?>
    <a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”><img src=”<?php echo $image; ?>” alt=”<?php the_title(); ?>”/></a>
    <?php else: ?>
    <a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”><img src=”<?php bloginfo(‘template_directory’); ?>/images/random/img<?php echo rand(1,5)?>.jpg” alt=”<?php the_title(); ?>” /></a>
    <?php endif; ?>

    修改后的代码说明:

    /images/random/img<?php echo rand(1,5)?>.jpg

    前面的img是图片的名称,我们可以新建几个名称为:img1.jpg, img2.jpg,img3.jpg,img4.jpg,img5.jpg的图片,放到/images/random/(图片所在的位置,可根据实际修改。)目录中,也可以是其它格式的图片。将上面的代码添加到模板适当位置,刷新一下页面看看效果如何。
    大家可以刷新一下我博客的首页zmingcx.com,看看随机缩略图的实际效果,还是很不错,不过大家要手下留情,刷几下也就算了,呵呵…

  • 杂志类(CMS)主题使用攻略

    经常有WordPress新手询问杂志类(CMS)主题首页缩略图及幻灯图片如何显示,今天写一个简单的基础教程,可能有些杂志主题设置上会有些特殊,后续还会为某个主题写具体的使用教程,看大家的需求啦。

    首先说说幻灯插件Featured Content Gallery简称(FCG)。

    这个插件在许多CMS类主题中都有它的身影,效果很炫,一般都放在首页的顶部,要使用该插件需在适当的位置加入代码:

    <?php include (ABSPATH . ‘/wp-content/plugins/featured-content-gallery/gallery.php’); ?>

    在编辑文章时在下面自定义字域中,左侧添加“articleimg”,右侧是你上传的图片地址,再在左侧添加“featuredtext”,右侧输入图片说明。如果要显示特定分类的文章,则需要新建一个英文名称(不支持中文)的分类,然后把准备显示在幻灯片中的文章加入到这个英文名称的分类中,最后在FCG设置中输入要显示英文分类的名称及要显示的数量。

    其它如:幻灯大小、背景色、边框色、说明文字高度、变幻过渡效果及时间等可以根据实际在FCG设置中调整即可。

    这里需说明一下,有的朋友也添加了自定域但是就是看不见幻灯显示,原因就是这个插件使用时,要求必须有两篇以上的文章添加自定义域“articleimg”,并用要根据主题设置相应的高度及宽度,否则可能不会显示幻灯。

    FCG插件后台设置选项很多,和我一样E文不好的朋友可以到此下载汉化版,覆盖原插件文件即可。

    第二个就是很多杂志主题的共有的特征首页缩略图设置问题。

    部分主题具备了自动截取图片功能,一般此类型的主题目录中都有thumb.php函数文件,并且主题目录中包括名称为“cache”图片缓存文件夹,使用此类型的主题需设置网站空间文件夹读写权限为777以上,否则可能不会自动截取图片。

    大部分杂志主题都需要手动添加自定义域来实现首页的缩略图显示,一般自定义域名称为:image、thumbnail等等。

    具体添加方法看图:

    fields

    注:可能有的主题是另外一些特殊的关键字名称,那该如何查看和判断是什么自定义域名称呢?这个也不是什么难事,除了到主题发布网站,查看使用帮助外,还可以通过查看index.php文件(有的主题也可能在其它文件中)查看该主题具体自定义域名称,在其中搜索查找:$post->ID,找到后,其紧跟的单词就是具体自定义域名称,比如:$post->ID, ‘thumbnail’,这个“thumbnail”就是自定义域名称,简单吧。

    另外,之前使用过其它的杂志主题,添加过自定义域名称,也可以将新的准备用的主题自定义域名称改成之前的自定义域名称,这样就不用再为文章添加新的自定义域名称了。

    第三个就是首页文章截断问题。

    有些主题可能具备按字符多少自动截断文章的功能(这个功能对汉字截断效果不是很好),也可通过类似中文工具箱等插件实现截断,但个人认为还是手动添加“more”标签最方便、最灵活。

    添加方法:在编辑文章时,切换到HTML模式,在适当的位置加入“more”标签即可。

    第四个是分类文章列表设置。

    有些主题首页显示的是分类文章标题列表,一般此类主题,都有类似query_posts(‘showposts=4&cat=66’)或WP_Query(“cat=66&showposts=4&offset=1”)的代码,其中数字“4”是显示几篇文章,“66”是分类的ID,“1”是不显示该分类最新的1篇文章,可以到后台分类中查看要显示的分类ID,将数字改成自己想要显示的即可。可能还有其它的调用代码,不过只要在index.php文件中有类似的代码,修改相应的数字基本就可以了。

    先就写到这,再想到什么或都大家还有什么疑问可以提出来,我再补充内容。