[转]关于WORDPRESS缩略图必须了解的事情

你也许曾经或多或少的听说过一些关于wordpress2.9+内置缩略图功能。是的,你可以直接通过wordpress上传图片制作成缩略图,但是它不仅仅可以做出缩略图,你甚至可以控制缩略图的大小。

在本教程中,我将会涉及到很多关于缩略图的事情。有些是给普通的用户,也有的是写给正在制作开发wordpress主题或者插件的朋友。

有件事情很有必要在之前强调,就是缩略图是和文章绑定在一起,他们之间是不可以没有关系的。
普通用户想使用缩略图怎么办

首先,你所使用的wordpress主题必须支持该功能,否则,你将不可能使用这个功能。这里我们先假设你的主题支持这个功能,至于如果给主题添加这个功能将在后面的教程中提到。

要使用这个功能,你必须登录后台,然后确定你已经来到了文章编辑页面,在屏幕的右下方你会看到一个叫做“Post thumbnail”或者“Page thumbnail”(注:中文3.0以后的显示的是特色图片)

那里你会看到“Set thumbnail,”的按钮(注:中文3.0以后的显示的是添加特色图片),它能让你通过媒体上传工具添加新照片。

它不仅仅能够产生缩略图

虽然叫它缩略图,但是我们可以用它来做很多的事情。(例如特色图片,还有首页展示的中等大小的图片)

通常的,wordpress给你设置了三种缩略图大小,他们分别为

缩略图(Thumbnail)
中等图(Medium)
大图(Large)
原图(Full)

有些插件可以让你产生更多尺寸的缩略图,这里提这个只是想让你知道不仅仅有这么多种大小的缩略图你可以在这里使用~这个功能也不仅仅局限于缩略图。
如何让一个主题支持WORDPRESS内置的缩略图功能

主题编辑者,这里我将将这个描述的很容易。你只需要添加一行代码就可以让你的用户享受到这个功能。在function.php里添加如下代码:

add_theme_support( ‘post-thumbnails’ );

也许,你会想给些特定的文章设定缩略图样式。(上面的代码默认是给文章和页面都添加缩略图功能的),看看下面的代码:

add_theme_support( ‘post-thumbnails’, array( ‘post’, ‘page’ ) );

如果你只想给文章页面添加缩略图功能,你可以尝试下下面这个代码代替上面的:

dd_theme_support( ‘post-thumbnails’, array( ‘post) );

当然单单只添加这句代码,还不能在wordpress前台产生什么效果,你需要在主题文件中,你想要呈现缩略图的循环中插入代码。例如你想在文章分类列表中展示缩略图,你可以在主题文件中加入如下代码:

同时,你也可可以尝试如下代码,他会产生一个中等大小的缩略图:

大概就这么多了,作为一个主题的编辑者,你只需要添加一两行代码,就可以在你的主题中添加功能如此强大的缩略图。

教程剩下的内容将关注于缩略图的一些开发功能还有使用旧图像的一些选项。
确认文章里是否有缩略图

有时候,我们总会想先确认文章里是否有缩略图,有个函数叫做has_post_thumbnail(),它会根据是否存在缩略图返回true或者是false。

在下面的例子里,会先检查是否有缩略图,如果没有的话则输出我们提前准备的图片

‘;
?>

获取文章缩略图的ID

也许你需要编写自己的自定义脚本,但仍希望允许使用主题的人上传自己的图片。你可以获取文章的缩略图ID然后使用它。此ID保存在_thumbnail_id里。这是附加文件的ID。

你只需要通过下面的代码调用这个值

$image_id = get_post_thumbnail_id();

如何让返回值为图片而不是直接显示出图片

有时候,你可能想返回文章的缩略图然后再php代码中使用它,而不是直接显示出图片。下面这段代码可以实现这个功能:

$image = get_the_post_thumbnail( $post->ID, ‘thumbnail’ );

如何控制缩略图的尺寸

一些插件开发者或许希望可以控制缩略图的大小(亦或是主题开发者),post_thumbnail_size可以帮你做到这个。下面的代码的作用就是将缩略图大小控制为middle大小。

将下面的段代码插入function.php或者放入你插件里:

add_filter( ‘post_thumbnail_size’, ‘my_post_image_size’ );

function my_post_image_size( $size ) {
$size = ‘medium’;
return $size;
}

改变缩略图输出的HTML代码

有些情况下,你可能想改变缩略图输出的html代码,下面的例子里,我将展示如何给缩略图添加文章的链接。

将下面的php代码插入function.php或者插件的代码里:

add_filter( ‘post_thumbnail_html’, ‘my_post_image_html’, 10, 3 );

function my_post_image_html( $html, $post_id, $post_image_id ) {

$html = ‘‘ . $html . ‘‘;

return $html;
}

改过之后,对我之前的图片(缩略图)怎么办

也许你和我一样,之前都是通过自定义栏目来实现缩略图的,如果你突然改变使用这种方法,之前的那些文章都要改了。

我这里有个解决的方法,使用插件Get the Imag

0.4版的插件在wordpress2.9放出的时候公布的。他不仅支持给wordpress新文章添加缩略图,而且你不会丢失掉你之前添加的那些图片。这个插件可以在以下五个途径寻找文章的图片。

自定义栏目
新文章的缩略图
文章附加的图片
在文章里扫描得到的图片
默认图片

好好享受你文章的缩略图功能吧

我希望这篇教程可以给你对wordpress缩略图功能有更深的认识,有一些限制,但是总体上说,这个功能相对于其他的方法来说,使得缩略图更加方便了~

原文地址:Everything you need to know about WordPress 2.9′s post image feature

简单翻译by:ididi

WordPress导航HOME改中文

汉化一个国外的主题,首先就想到了把“HOME”改成“首页”,在网上查询了好久,说是一种方法可以直接修改header.php文件里面的home内容为“首页”就可以,不过我下载的这个主题使用不了。后来瞥见一贴,修改functions.php里面的home,最终解决了问题,虽然还没有研究清楚为何如此,不过基于WORDPRESS的框架,这是一个功能吧。要继续研究PHP和WORDPRESS!

双系统下格式化ubuntu出现问题的解决方式

是不是想让系统直接启动到Windows,不出现Linux的Grub(或LILO)引导界面,或者是在Windows中删除了Linux分区后无法正确启动Windows,而停留在“grub>”提示符处,怎么办? 请往下看,这里给你提供几种实用的方法:
Continue reading “双系统下格式化ubuntu出现问题的解决方式”

WordPress文章标题中文不正常显示问题

很多博友对WordPress的一些国外收费主题不显示中文标题一直很困扰,很多功能强大且漂亮的主题对于国人来说都是美中不足的,鉴于此,在网上搜索了一下相关原因,发现这些主题都是用了Cufon这种网页文字渲染特效。首先来了解一下Cufon:
根据百度百科的资料:

什么是 Cufon:
Cufon 是一个用来替代 sIFR 框架, 实现在网页中对文字字体进行渲染功能的纯 JavaScript 开源类库(cufon-yui.js)。
为什么要使用 Cufon:
在web开发中,经常面对的一种“冲突”,即“字体(Font Family)冲突”。
通常的这一冲突总是爆发于 Web 页面的设计者(Designer)和开发者(Coder)之间。在很多场合下,Web 页面的设计者都会倾向于在他们的页面设计稿中,为文字附加使用一些“特殊”的字体和特效,以此来展示他们卓越的设计能力。比如设计一个公司的Logo,图片上的一些特殊字体是从ps字库中调出的,当然这些文字在图片上显示肯定是没有问题的,但是如果要在网页中用文本来显示这些效果,就是会让开发人员抓狂了,因为浏览器并不支持所有的字体,这种情况Cufon就会大显身手了。

对我们而言,只要简单知道Cufon 是渲染网页字体的就行了,很多定义的字体里面没有中文,所以不显示中文标题,我觉得是这个原因,既然不支持,只要把cufon的js删除或者注释掉就可以。

解决办法:

找到cufon.js或cufon相关命名的文件,这个文件基本是在主题的js文件夹内,也许是在其他位置,仔细找找就能找到,找到后把这个文件名改成其他名字或者把这个文件删除,就可以了。
也可以通过注释代码来实现,一般是在header.php文件里面,搜cufon就知道cufon.js是在那个文件了,直接把这句代码注释掉,或改改就行了。

如果在header文件里面找不到cufon相关的内容,可以尝试一下在其他显示选项下面寻找是否包含一个cufon的文件,本博客就遇到这种问题,现用主题有一个叫做lightword的功能,cufon就集成在里面,所以只需要取消执行cufon就可以了。

WINDOWS装机必备软件

由于每次重装都有一系列的软件需要装,而且每次装过以后都或多或少的忘记一些。所以将这些软件一一列下,可以帮助自己好好的收集这些好的软件。当然如果读者看到这些,也希望对大家有用。
注:
软件的版本没有特别注明的话,可以使用最新版本。
装软件的时候,请注意所绑定安装的软件,如果不需要,可以不用安装。

影音播放

Windows 7 Codecs
免费软件
http://shark007.net/win7codecs.html
WINDOWS 7自带的WINDOWS MEDIA PLAYER,我认为在美观上,微软团队一经做到很到位了,只是在视频格式解码上还是非常的缺乏。Windows 7 Codecs可以作为WMP的一个非常完整的解码器。
所支持的格式:amr | mpc | ofr | divx | mka | ape | flac | evo | flv | m4b | mkv | ogg | ogv | ogm | rmvb | xvid

文本编辑

Notepad++
免费软件
http://notepad-plus-plus.org/
Windows自带的“笔记本”(notepad)软件,仅仅只能作为一个简单的编辑器。而如果需要胜任诸如“程序编程”,“字符编码转换”等等,就非常的力不从心。而这个软件支持几乎所有的程序语言,html, xml, perl, python, java 等等。 在文字编码转换上,能力也不弱,而且界面非常友好。

网页浏览器

Mozilla Firefox
免费
http://www.mozilla.com/
大名鼎鼎的火狐可谓无人不知无人不晓。作为一款有别于IE内核的浏览器,在诸如IE内核的浏览器完全奔溃的情况下,他还能稳健的奔跑,足见他的优势。虽然用这个还不够深入,但是即使在UBUNTU系统下,他也属于表配,可见,他可是程序员的浏览器首选。配合下面介绍的插件“google工具栏”,可谓是你走到哪里,都不用担心找不到你保存在家里网页。

Google Toolbar
免费
http://www.google.com/intl/en/toolbar/ff/index.html
一个火狐浏览器的插件,结合GOOGLE的帐户,将能体验到众多的功能。比如说同步书签,新邮件提醒,分享信息等等。

Adobe Flash Player
免费
http://www.adobe.com/products/flashplayer/
FLASH已经成为上网不可或缺的一个因素,看视频,网页游戏都需要FLASH,所以,Adobe的Flash必须得成为装机软件的一大必备。

输入法软件

搜狗云输入法
免费
http://pinyin.sogou.com/
搜狗云输入法是搜狗研发的新一代中文输入法。它比搜狗拼音法拥有更优异的性能和操作体验,是中文输入史上的里程碑。搜狗云输入法是基于搜狗拼音输入法,依托云计算技术的一个概念性输入法产品。与一般输入法最明显的区别在于,完全靠服务器运算,具有更强大语言模型和词库,能大幅提升输入准确率,特别是长句输入准确率。找词的准确性确实高了,不用花时间去找字,打字速度自然就快了。

文本阅读

Adobe Reader
免费
http://get.adobe.com/reader/
Adobe Reader,作为一款PDF的阅读软件,可谓是不可或缺的。

下载软件

迅雷
免费
http://www.xunlei.com/
迅雷,国内太有名了,必须得用啊。

JAVA – 数组 (Arrays, Dictionnaire)

数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。

在JAVA中,当一个数组给创建,那么这个数组就有一个固定的长度。每一个在数组终的个体,我们称其为元素,每一个元素在数组中都有一个对应的索引号码。而这个索引号码,从0开始计数,也就是说第一个数组中的元素,他的索引号码是0. 如下面这个例子:

我们创建了一个数长度为10的数组,那么10个元素对应的号码从0开始,一直到9结束。假设我们需要找第九个元素,那么我们因该用所以号码八去找这个元素。

Illustration of an array as 10 boxes numbered 0 through 9; an index of 0 indicates the first element in the array

下面这个例子是在JAVA变成中,创建一个整数型数组的全过程,当然这个在实际的变成环境下,我们更多用的是循环来自动创建一个数组,而不是一行一行的把数组的元素输入。

class ArrayDemo {
     public static void main(String[] args) {
          int[] anArray;              // 声明一个整数型数组
          anArray = new int[10];      // 给10个整数分配内存

          anArray[0] = 100; // 初始化第一个元素
          anArray[1] = 200; // 初始化第二个元素
          anArray[2] = 300; // 同上。
          anArray[3] = 400;
          anArray[4] = 500;
          anArray[5] = 600;
          anArray[6] = 700;
          anArray[7] = 800;
          anArray[8] = 900;
          anArray[9] = 1000;

          System.out.println("Element at index 0: " + anArray[0]);
          System.out.println("Element at index 1: " + anArray[1]);
          System.out.println("Element at index 2: " + anArray[2]);
          System.out.println("Element at index 3: " + anArray[3]);
          System.out.println("Element at index 4: " + anArray[4]);
          System.out.println("Element at index 5: " + anArray[5]);
          System.out.println("Element at index 6: " + anArray[6]);
          System.out.println("Element at index 7: " + anArray[7]);
          System.out.println("Element at index 8: " + anArray[8]);
          System.out.println("Element at index 9: " + anArray[9]);
     }
}

程序输出结果为:

Element at index 0: 100
Element at index 1: 200
Element at index 2: 300
Element at index 3: 400
Element at index 4: 500
Element at index 5: 600
Element at index 6: 700
Element at index 7: 800
Element at index 8: 900
Element at index 9: 1000

如何申明一个数组

上面的例子向我们展示了申明一个整数型数组。而一个数组的声明,可以通过如下格式:

int[] anArray;

数组的类型跟一组空的终括号,最后加上数组的名字。还有另外一种方式用来声明数组,那就是把中括号放到数组名字的后面,而更改数组的类型,可以和定义变量的类型一样,如:

float anArrayOfFloats[];

下面这个列表是所有可创建的数组类型:

byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
foat[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;

数组的创建,初始化以及访问

数组的创建和初始化可以有两种方式,上面的例子是第一种方式:

anArray = new int[10];  // create an array of integers

通过new来新建一个数组,用int指出其包含的元素类型,以及后面终括号中的数字,限定了数组的长度。接下来在通过如下方式来给数组添加元素:

anArray[0] = 100; // initialize first element
anArray[1] = 200; // initialize second element
anArray[2] = 300; // etc.

这里可以发现,在数组名字后面的中括号中,我们加入了索引号码,也就是说,anArray[0]我们在第一个位置添加第一个元素。从读取或者说访问角度来说,我们也同样使用数组名加中括号和索引数字来读取相对的元素。

而另一种建立数组的方式是:

int[] anArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};

格式很简单,这个方法是直接把数组进行定义,并且直接给定数组长度和数组元素。我们在大括号中添加数组的元素,100,200,300等等都是数组的元素,而所有元素的个数就是这个数组的长度了。

多层数组的建立

在java编程语言中,我们可是定义一个多层数组。就是一个数组中有多个数组。如下:

第一种方法:声明数组 int[][] anArrays

第二种方法:int[][] anArrays = {{1,2,3,4,5,6,7},{2,1,3,4,5,6},{5,3,3,1,2,3,4,}}

数组的拷贝:

java语言提供了一个模块arraycopy来拷贝一个数组到另外一个数组。

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

在上面的语法规则中,我们能看到2个Object,他们分别是:第一个Object是原始数组,第二个Object是对象数组。而里面有3个int,分别是:第一个int,原始数组的第几个位置;第二个int,对象数组的位置;第三个int,复制的元素个数。

R-project学习笔记五

5. 数据类型转换和函数paste, nchar

§ paste可以使两个字符串相连,并且以空格隔开,例如

> paste(“numéro”, “1”)
[1] “numéro 1”

我们也可以在用paste的函数sep=来改变分割符,例如

> paste(“numéro”, “1”, “et”, “3”, sep=”_”)
[1] “numéro_1_et_3”

同时,还有几种不同的连接方式:

> x <- c(“numéro”, “partie”, “sous-corpus”)
> y <- c(“a”, “b”, “c”)
> paste(x, y)
[1] “numéro a” “partie b” “sous-corpus c”

或者

> y <- c(“a”, “b”, “c”)
> paste(“numéro”, y)
[1] “numéro a” “numéro b” “numéro c”

§ nchar以字符型向量为输入,并且数字型向量为输出,返回字符型向量中,每一个元素的字符数量。

例如:

> nchar(c(“un”, “deux”, “trois”))
[1] 2 4 5

§ 数据类型的转换

数据类型的转换,我们通过一下函数来进行:

as.logical()                 转换为逻辑型
as.numeric()              转换为数字型
as.character()            转换为字符串型

数据转换的规则:

R-project学习笔记四

4.通过逻辑来抽需向量的值

向量可以进行算术运算,但是2个向量的长度要相同,用逻辑来进行抽取也一样,需要等同的长度。

例如:

> x<- c(“Adv”, “N”, “V”, “D”)
> i <- c(T, F, T, F)
> x[i]
[1] “Adv” “V”
在逻辑的值是TRUE的时候,将会抽取向量中的值。

同理,我们也可以用一些逻辑运算符来进行抽取

§ 逻辑运算符:

大于                            >

小于                           <

等于                         ==

大于等于                >=

小于等于                <=

不等与                    !=

或                             |

一定                         &

用逻辑运算符的运算,例如

> x <- c(1, 6, 2, 8, 3, 4, 9, 10)
> x [x > 5]
[1] 6 8 9 10

还有

> x <- c(T, F, T, F)
> y <- c(T, T, F, F)
> x & y
[1] TRUE FALSE FALSE FALSE
> x | y
[1] TRUE TRUE TRUE FALSE

§ 对于一些返回结果的解释:NULL NA Inf 和 NaN

NULL,如何我们需要提取一个向量中元素的名字,可是这些元素没有名字,因此返回结果是NULL

NA,如果我们通过索引来抽取一个元素,可是这个索引的值大于向量的长度的时候得出NA,NA的类型是数字类型

Inf,数学计算中,1/0的结果未定义,所以,用Inf

NaN,而0/0是没有这种计算的,所以用NaN(Not a Number)