标签归档:PHP

WordPress3.0最新技巧

Woedpress是大多数写博客的朋友所喜欢选择使用的博客平台,而Wordpress技巧自然就成了众多博友们普遍讨论的热门话题,因此,我决定收集并编写10个新的非常有用的Wordpress技巧,且照旧与朋友们一起分享。

1.去除评论自动链接

平时读者来给我们的文章发表评论的时候,评论中就会附带有一个url,Wordpress会自动将它转换为链接的形式,虽然很有用,但有时有的链接未免带有“垃圾”的性质,有的朋友可能需要将这些自动链接去掉,那么,下面提供一个解决方法。

将下面这条代码粘贴到主题文件functions.php 中,然后保存,所有评论的自动链接将悄然消失:

remove_filter('comment_text', 'make_clickable', 9);

2.通过邮件自动将博客更新告知用户

对于个人博客来说,实现这样的功能非常有好处,你的读者用户可以及时知道你博客发表了新的文章。下面的这条代码会搜索你的数据库并获取读者用户的邮件地址,Wordpress会根据这些邮件地址自动发送博客更新的信息。将下面的代码放到functions.php文件中即可:

function email_members($post_ID)  {
    global $wpdb;
    $usersarray = $wpdb->get_results("SELECT user_email FROM $wpdb->users;");
    $users = implode(",", $usersarray);
    mail($users, "New WordPress recipe online!", 'A new recipe have been published on http://www.catswhocode.com');
    return $post_ID;
}

add_action('publish_post', 'email_members');

注意:目前此代码还没有取消订阅的功能,使用时请慎重考虑!

3.将Twitter消息发布日期显示为“发布于多少天前”的格式

许多人都不知道Wordpress有一条内置的功能函数human_time_diff()可以实现这样的日期显示格式,只需将下面这条代码粘贴到你想要显示“发布于多少天前”的任何loop循环之间即可:

发布于<?php echo human_time_diff(get_the_time(<'U'), current_time('timestamp')) . ' ago'; ?>

下面这一段代码就是将时间格式转换为“发布于多少天前”的Wordpress PHP功能函数:

function  timeAgo($timestamp, $granularity=2, $format='Y-m-d H:i:s'){
        $difference = time() - $timestamp;
        if($difference < 0) return '0 seconds ago';
        elseif($difference < 864000){
                $periods = array('week' => 604800,'day' => 86400,'hr' => 3600,'min' => 60,'sec' => 1);
                $output = '';
                foreach($periods as $key => $value){
                        if($difference >= $value){
                                $time = round($difference / $value);
                                $difference %= $value;
                                $output .= ($output ? ' ' : '').$time.' ';
                                $output .= (($time > 1 && $key == 'day') ? $key.'s' : $key);
                                $granularity--;
                        }
                        if($granularity == 0) break;
                }
                return ($output ? $output : '0 seconds').' ago';
        }
        else return date($format, $timestamp);
}

上面那段函数包含了3个参数:

timestamp: 日期
granularity: 时间间隔长度. 默认为 2 (1天, 15小时前)
format: 日期显示格式. 默认为 Y-m-d H:i:s.

调用方法如下:

$time= timeAgo($dateRef);

或者你也可以在Wordpress中使用这条timeAgo() 函数:

echo timeAgo(get_the_time('U'));

4.在RSS feed中显示文章缩略图

在WordPress 2.9中开始引入了这样的一条函数:the_post_thumbnail() ,能够帮助我们设置并显示文章缩略图,只可惜在RSS订阅源中没有内置的调用函数,这里我们就为它添加上。

只要将下面的这段代码粘贴到functions.php中,保存,文章缩略图就自动显示在你的RSS订阅源中了:

function diw_post_thumbnail_feeds($content) {
    global $post;
    if(has_post_thumbnail($post->ID)) {
        $content = '
<DIV>' . get_the_post_thumbnail($post->ID) . '</DIV>
' . $content;
    }
    return $content;
}
add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');
add_filter('the_content_feed', 'diw_post_thumbnail_feeds');

5.阻止外部请求

默认情况下,Wordpress会在后台自动接收来自外部的一些请求,如Wordpress版本更新,Wordpress新闻等消息,安装Wordpress之后,你每次打开后台都会看到这些消息,如果你不想看到这些消息,使用下面的方法来解决。

在wp-config.php文件中加上以下两行:

define('WP_HTTP_BLOCK_EXTERNAL', true);

但是你也可以添加白名单以接收某些来自外部的请求:

define('WP_ACCESSIBLE_HOSTS', 'rpc.pingomatic.com');

修改其中的rpc.pingomatic.com为你自己所需。

6.简易调试模式

当你的WordPress运行出现问题的时候,你可能就会使用这个超级实用的调试工具WP_DEBUG,而默认情况下,你需要在wp-config.php添加一段代码以让调试模式生效。如果你想在Wordpress运行正常之下轻松进入调试模式的话,可以编辑wp-config.php文件,在里面找到这一行:

define('WP_DEBUG', true);

然后将其替换成:

if ( isset($_GET['debug']) && $_GET['debug'] == 'debug')
  define('WP_DEBUG', true);

然后增加一个GET参数到你要访问的页面的url链接,如下:

http://www.catswhocode.com/blog/about?debug=debug

另外,如果默认未开启的话,也可以直接在wp-config.php中把上述那句话的false改成true,然后进入后台就会有各种提示,调试完成以后又可以改回false. 这种方法比较简单方便。

当然,以安全起见,你应该把debug替换成一个随机词,这样就没有人会访问到你调试模式下的网页了。

7.在主题文件中使用WordPress简码

创建WordPress简码非常简单,可以让你在文章或网页里面添加RSS订阅、Google地图、相册等内容。那是否可以在主题文件中输出简码呢?答案是肯定的。WordPress有个内置函数,叫做do_shortcodes(),只需要为其加上一个参数,就可以显示你想要的简码。

do_shortcode('[简码名称]');

上面的“[简码名称]”就是我们想要显示的简码了,你可以修改为别的名称。

8.允许上传更多的文件类型

在Wordpress中,一般来说,如果你要上传一个不是那么常见类型的文件,往往会出现错误。因为WP会禁止你上传其它的文件类型。幸运的是,你可以增加新的文件类型到你的WordPress白名单,方法也很简单,只要把下面这段代码粘贴到functions.php中就大功告成了。

注意:文件类型名字必须用“|”线隔开

function addUploadMimes($mimes) {
    $mimes = array_merge($mimes, array(      'tmbundle|tmCommand|tmDragCommand|tmSnippet|tmLanguage|tmPreferences' => 'application/octet-stream'
    ));
    return $mimes;
}
add_filter('upload_mimes', 'addUploadMimes');

9.简码调用Google Docs的PDF阅读器

Google Docs(谷歌文档)是一个非常方便的在线阅读.pdf/.doc/.xsl文件的方式。如果你也想在你的博客中和你的读者分享一个PDF文件,何不尝试在Google Docs打开而不是强制下载呢?方法十分简单,只要加入如下代码到functions.php即可。

function pdflink($attr, $content) {
    return '<A href="http://docs.google.com/viewer?url=' . $attr['href'] . '">'.$content.'</A>';
}
add_shortcode('pdf', 'pdflink');

保存文件后,你可以把这段代码放到对应的文章或网页中, 语法如下:
【pdf href=”http://yoursite.com/linktoyour/file.pdf”】查看PDF文件【/pdf】
使用时须将其中的【 】改为[ ]。

10.检测访问者的浏览器

这段代码所做的事情很简单,就是检测访问者的浏览器名字并把它加到body_class()函数中,这样一来,你就可以极其轻松地解决浏览器兼容的问题。将这段代码放到functions.php中。

add_filter('body_class','browser_body_class');
function browser_body_class($classes) {
    global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;
    if($is_lynx) $classes[] = 'lynx';
    elseif($is_gecko) $classes[] = 'gecko';
    elseif($is_opera) $classes[] = 'opera';
    elseif($is_NS4) $classes[] = 'ns4';
    elseif($is_safari) $classes[] = 'safari';
    elseif($is_chrome) $classes[] = 'chrome';
    elseif($is_IE) $classes[] = 'ie';
    else $classes[] = 'unknown';
    if($is_iphone) $classes[] = 'iphone';
    return $classes;
}

这段函数输出的结果类似如下:
<body class=”home blog logged-in safari”>

参考文章:10个最新的WordPress技巧

WordPress Download Monitor插件使用详解

Download Monitor是管理文件下载的WordPress插件,可指定文件只允许登陆下载,具有下载统计功能,同时含有一个下载页面(可点击本站顶部导航栏的下载查看效果)。另外单条下载效果如下面的插件下载。

提出一个概念——短标签(官方文档上是short-tag),就是用类似于用[]括起来的部分(包括[])。WordPress Download Monitor插件支持的短标签为download_page、download、downloads3 个。短标签中可以包含一个或多个属性;属性由属性名和属性值两部分组成,中间用等于号=连接,属性值需要用半角双引号””括起来;属性与短标签名、属性与属性之间用空格隔开。比如短标签download id=”2″ format=”3″包括值为2的id属性和值为3的 format属性。具体属性值的意义如下:

在前台显示文章或页面内容时,WordPress Download Monitor插件会查找以上3个短标签,然后替换为相应的HTML进行显示。

使用download_page在页面里,该页面会被替换为下载页面

使用download会被替换为一条下载项

使用downloads会被替换为多条下载项

具体替换成的HTML内容(即显示的样子)由短标签可选的属性与值决定。下面会具体介绍。

使用介绍:

安装激活WordPress Download Monitor插件,略过。

1、插件配置

在后台管理菜单底部找到下载管理,在这里进行插件的配置、下载项的管理和下载日志的查看。

分类管理:添加、删除下载分类。需要先行设置。

自定义输出样式:单条下载项被替换成的HTML内容,其中每次下载输出HTML不同的部分用变量表示,类似于{url},具体可用的变量在后台设置界面上有提示。这里需要懂一点HTML知识,如果你还欠缺的话,赶紧去补习一下。添加新样式后会对应有一个ID,我们记为FormatID,因为后面会用到。需要先行设置。

自定义下载地址:设置下载链接的URL格式,如果不做设置的话,使用默认下载地址wp-content/plugins/wp- download_monitor/download.php?id=的格式。设置的话需要服务器支持URL重写,或自行通过404方法实现对永久链接的支持。可不做修改。

其他选项:自行看设置旁边的说明。可不做修改。

以上配置中分类和输出样式需要使用插件前做好设置,其他可保留不动。

2、添加下载项

【插件v3.3之前的版本】在下载管理里有两项功能:添加本地文件和添加已有文件。两者唯一的差别是是否上传下载文件。添加本地文件是在添加时选择本机电脑的文件并上传到服务器上(上传后文件位置是在配置的其他选项里设置的),而添加已有文件则是直接添加一个已经在网络上可访问的下载链接作为下载源。添加一个下载项时具体的填写的内容直接看添加界面的提示即可。【插件v3.3之后的版本】下载管理里添加新下载项(Add New),已将之前版本的添加本地文件和添加已有文件合并,用上传文件或者填入文件的地址来区分是上传本地文件还是使用已有文件。

自定义字段如果你不懂的话就别踩它,一般人估计也用不到。添加一个下载项后在下载管理->编辑界面可以看到下载项的ID,我们记为 DownloadID,后面会用到。

3、添加下载页面

下载页面类似本站顶部导航栏下载链接打开后的页面,罗列了所有下载项的页面。

添加方法是:在后台管理界面,添加一个新页面,标题和永久链接自定,内容最简洁的只需要输入download_page即可。在前台打开这个新添加的页面就变成下载页面了,因为短标签被替换成了下载页面。

当然,可以做一些自定义的设定,只需要为短标签download_page增加一些属性;如希望下载页面每个分类默认热门下载只显示5个,每个下载项使用输出样式FormatID为3,只要使用短标签

download_page pop_cat_count=”5″ format=”3″即可。具体可使用的属性看这里。

4、在文章中添加下载链接

在编辑文章界面,可以直接在文章编辑区需要插入下载链接的地方直接输入短标签,即一个向下的箭头符号,插入后会显示代码,例如:

download id=”1″(这里的id值就对应上面下载项添加后获得的DownloadID);或是切换到HTML源代码模式下在编辑工具栏里有一个下载管理下拉选框,直接选择一个即可,系统会为你在文章编辑区光标所在的地方插入类似[download id=”1″]的短标签,当然其中1会被替换为你选择的下载项对应的DownloadID。

为了让下载链接显示样式不同,可以为短标签添加format属性,类似download id=”2″ format=”2″,其中format对应上面配置自定义输出样式添加时获得的FormatID。指定format后,输出地下载链接会用对应的输出样式去显示。其他可使用的属性看这里。

通过此插件上传的文件位于网站目录 /wp-content/uploads/downloads/年/月/ 下。

更多文章:

WordPress Download Monitor插件标签使用

9月编程语言排行榜:PHP的历史性突破

9月6日消息,Tiobe今天发布了2009年9月的编程语言排行榜,PHP在本期榜单中获得历史性突破,以近一个百分点的增幅成功进入前三名,C++下降一位,排名第四。本期编程语言排行榜,我们将回顾PHP的成长,分析PHP的发展前景。

1623020

本期编程榜前二十名榜单

简单之道

1994年,Rasmus Lerdorf并没想到自己为了维护个人网页而发明的脚本语言会在今天的Web开发领域大放异彩。在这早期的版本中,PHP只提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要且增加一些特性,比如循环语句和数组变量等等。1995年发布的PHP2.0定名为PHP/FI(Form Interpreter)。PHP/FI加入了对MySQL的支持,从此建立了PHP在动态网页开发上的地位。

143452775
PHP之父Rasmus Lerdorf

到了1996年底,已有15000个网站使用 PHP/FI;时间到了1997年,使用PHP/FI的网站数字超过五万个。而在1997年中,开始了第三版的开发计划,开发小组加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名为PHP3。2000年,PHP4.0问世了,其中增加了许多新的特性,而这些特性都是开发者和当时的项目强烈需要的。

从1.0版本到4.0版本,PHP在开源社区和Zend公司的支持下保持稳定的增长和进步。在这种快速的成长中,PHP并没有像其他语言那样因为日益复杂的需求而盲目增加新的功能特性;它一直保持着简单高效特性,并凭借这个优点吸引新的开发者加入到PHP的阵营。

171237682 
PHP近年发展趋势

关于PHP的发展历程推荐阅读这两篇文章《PHP发展历史》《从个人主页到企业级开发:PHP的商业化历程

Web开发之王

51CTO.com之前曾有一篇报道《PHP成为中国应用最广的Web开发语言》,文章提供的数据显示,截至2008年底,在中国超过160亿个网页中,PHP网页数量最多,占总数的24%。

随着PHP5.0对面向对象功能的增强,PHP吸收了Java, C++, PERL和C语言最优秀的部分,这种集众多优秀语言特性于一身而简单高效的语言成为Web项目开发的首选语言。这些优点成就了PHP在2004年的爆发式增长。

与此同时,Ruby on Rails取得的成功也带动了PHP Web框架的长足发展。Zend Framework、Codeigniter、CakePHP以及国内的Flea、ThinkPHP都使PHP发挥更大的力量。使用框架,PHP项目可以得到更快更简单的部署和更加敏捷的开发效率。

关于PHP开发框架请参考

如何学习一个新的PHP框架

国外主流PHP框架对比评测

国外十大最流行PHP框架排名

企业级之痛

PHP在Web开发领域的成功吸引了更多开发者的关注,一些人开始拿PHP与.NET和Java进行比较(详细请参考Java和PHP在Web开发方面的比较PHP与ASP.NET比较)。安全、稳定和可扩展成为对PHP批判的理由;而这一切的背后,是PHP在大型企业级项目的弱势。51CTO.com曾多次关注PHP在企业级开发方面的发展。

PHP开发大型系统的缺点大型系统上PHP令人不爽的九大原因等文章受到了网友的广泛关注。

无论如何,PHP依然在发展,本期编程榜中PHP的历史性突破说明了PHP5.3版本的成功,在PHP5.3版中多达140项的bug修复和众多的特性更新使我们看到这门语言的发展与活力。有文章指出,PHP已经成长为一门企业级的语言,甚至有人断言PHP将称雄于21世纪、22世纪