首页 > wordpress

php7已经release很长时间了,据说性能提升很大,正好这两天蚊子的blog出现了性能的问题,于是就考虑将原来的php5升级到php7,以减少php-fpm的负载。结果在升级的过程中,确实也是遇到了一些问题。下面把我的升级过程大概记录下来,以方便有需要的朋友避免采坑。在线升级有风险,请做好备份。php7性能可以看看这篇文章。 做好备份工作后,就开始我们的升级之旅吧。首先要安装php7的包,蚊子的系统是ubuntu14.04,添加php7的repo

 

接下来你会看到PPA的一段描述,紧接着会有继续的提示,直接点击“回车”键即可。

repo安装好了,接下来更新package cache。

 

接下来安装php7的包

继续阅读→

阅读全文

近期,学习了一下wordpress的插件开发,也算是小有成就吧,完成了返回顶部这样的一个插件。

功能

本插件模仿新浪微博中的返回顶部样式所做,为了方便访问者轻松的返回到博客的顶部而开发,有此需求的朋友可以拿来使用,并留下你们宝贵的意见和建议,来帮助蚊子完善这款插件。

适用版本

本插件在wordpress3.2.1下完成,低版本希望有人测试后给与反馈。 继续阅读→

阅读全文

最近蚊子发布的一些文章的postid好多都不挨着,看着让我很不爽,网上查了一下,原因如下

    1、日志的自动修订功能Revision占用ID;

    2、日志的自动保存功能也占用ID;

    3、利用系统上传的图片附件要占用ID,如果上传多个图片,都要占用ID的;

第3条图片附件占用ID的问题在系统内部是无法解决的,除非不上传附件,最好的办法就是外链,把图片上传到别的地上,调用到日志里。
本文就是要介绍一下关闭自动修订功能和自动保存功能的解决办法:

一、关闭自动修订功能解决办法:

但是当你有一定数量的文章,而不需要保存修订记录时,修订记录就反而成为了增加数据库负担的一个功能。当然有现成的插件可以帮你关闭并删除修订记录的功 能,这里简单介绍一些不用插件的办法。打开安装目录下的 wp-config.php 并找到这行:

require_once(ABSPATH . ‘wp-settings.php’);

在这行前面的任意地方,甚至可以是文件的开头,加入:

define(‘WP_POST_REVISIONS’, false);

保存之后,自动修订功能就关闭了。

二、关闭自动保存功能解决办法:
事实上自动保存功能也会在数据库内部产生修订记录。如果不通过插件或者修改程序代码的话,标准的WordPress是无法真正的关闭自动保存功能的,但是允许你设置每次自动保存的间隔。因此你可以设置个一天的,找到wp-settings.php文件,找到

define( ‘AUTOSAVE_INTERVAL’, 60 );

把自动保存时间改为一天:

define(‘AUTOSAVE_INTERVAL’, 86400 );

或改为一年:

define(‘AUTOSAVE_INTERVAL’, 31536000 );

这样就实现了在短时间无法自动保存的目的,同时也不会产生修订记录了。

附:如果你原插件不反感,你可以使用Super Switch超级开关插件简单实现自动保存功能的关闭。

如果想在这个点上达到最大程度优化,你也可以删掉原有的修订记录,只要连进数据库并按顺序运行以下SQL语句:

DELETE FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type = "revision");
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type="revision");
DELETE FROM wp_posts WHERE post_type = "revision";

这样,就把以前的修订记录清理干净了。

原文:http://www.xbaidu.net/227.htm

阅读全文

今早蚊子来,看到google订阅中有人推荐wordpress的插件,其中有个插件叫MobilePress,它首先通过浏览器的 User-Agent 判断出用户是否使用手机在浏览你的 WordPress 博客,然后它会给博客更换一款适合手机浏览的主题,让手机用户更好的浏览博客。

MobilePress 安装和使用

MobilePress 安装非常简单,只要上传激活即可,也可以通过 WordPress 后台直接安装。

安装好 MobilePress 之后,在 WordPress 后台主菜单就多了一个 MobilePress 的菜单,他有两个子菜单:

  1. Options

    • 这里的 Blog Title 和 Blog Description 是让你给手机版本的博客设置一个博客标题和描述,留空使用原来默认已经设置好的博客标题和描述。

    • Force Mobile Site? 强制使用手机版,即使使用普通浏览器浏览也会显示适合手机浏览的主题。一般选择 no 了,普通浏览器用户还是希望给他看到更多精彩的展示。

  2. Theme

    目前只有两种,default1.0和iphone1.0,在蚊子看了,这两个目前没有什么分别

和Hyper Cache配合使用

如果你和蚊子我一样也是使用了Hyper Cache这款插件,那你需要开启插件中的Configuration for mobile devices选项下的Detect mobile devices

阅读全文

这两天blog恢复,兴奋之余,发现,访客的留言ip都是proxy的地址,而不是真实的ip地址,于是打印了一下$_SERVER信息,看到$_SERVER[‘REMOTE_ADDR’]本应该是访客ip的,结果却变成了proxy的地址,这个不是我们需要,同时发现在$_SERVER中包含了HTTP_X_FORWARDED_FOR字段,而且wordpress使用的是REMOTE_ADDR字段值,那就好办了,使用如下代码,就可以将真是的访客地址拿到

if(isset($_SERVER[‘HTTP_X_FORWARDED_FOR’]))
{
$list = explode(‘,’,$_SERVER[‘HTTP_X_FORWARDED_FOR’]);
$_SERVER[‘REMOTE_ADDR’] = $list[0];
}

把上面这段代码加入到wp-config.php的开头部分就可以了

因为X-Forwarded-For头的记录格式是:client1,proxy1,proxy2,所以在上面的代码中我们取的是第一个值。

参考:http://www.onono.org/2009/07/181.htm

阅读全文

给自己的BLOG加上了代码的语法高亮这插件,对比了好几个类似的插件,觉得这个还是不错的,并且还加上了CSS显示更好看些了,现在转载记录下,以备切换之用。另外注意的事不要设置line为1 即为显示行号,因为我的首页的摘要会出现问题。

下载地址:http://wordpress.org/extend/plugins/wp-syntax/

安装

  1. Upload wp-syntax.zip to your WordPress plugins directory, usually wp-content/plugins/ and unzip the file. It will create a wp-content/plugins/wp-syntax/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. Create a post/page that contains a code snippet following the proper usage syntax.

写文章时,用 <pre> 和 </pre> 将代码包住即可。同时在<pre> 中指定参数 lang=”代码类型” ling=”起始行数”。
最后在使用的过程中注意 lang=”” 一定要使用双引号,而不能用单引号。

Usage(使用方法)

Wrap code blocks with <pre lang=”LANGUAGE” line=”1″> and </pre> where LANGUAGE is a GeSHi supported language syntax. See below for a full list of supported languages. The line attribute is optional.

Example 1: PHP, no line numbers

Example 2: Java, with line numbers

Example 3: Ruby, with line numbers starting at 18

Supported Languages(支持的语言)

The following languages are supported in the lang attribute:

abap, actionscript, ada, apache, applescript, asm, asp, autoit, bash, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp-qt, cpp, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, latex, lisp, lua, m68k, matlab, mirc, mpasm, mysql, nsis, objc, ocaml-brief, ocaml, oobas, oracle8, pascal, per, perl, php-brief, php, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, vhdl, visualfoxpro, winbatch, xml, xpp, z80

(Bold languages just highlight the more popular ones.)

Styling Guidelines

WP-Syntax uses default GeSHi colors by default. It also uses inline styling to make sure that code highlights still work in RSS feeds. To spruce up your code snippets to look more like the screenshots, try adding this CSS to your stylesheet template:
WP-Syntax 能够保留代码中的缩进(空格),让代码更加美观。不过,WP-Syntax高亮的代码默认不会进行拆行,如果代码过长的话,将会导致页面被撑大,影响美观。将如下 CSS 样式写入到所选择的主题样式中,能够解决这个问题:

 

Advanced Customization

WP-Syntax supports a wp_syntax_init_geshi action hook to customize GeSHi initialization settings. Blog owners can handle the hook in a hand-made plugin or somewhere else like this:

This allows for a great possibility of different customizations. Be sure to review the GeSHi Documentation.

转自:http://www.ohlinux.com/?p=188

阅读全文

WordPress从2.6开始就有一个日志修订功能,对日志每修改一次,都会产生一个历史版本,感觉此功能对个人用户来说用途不大,反而加大了数据库的体积,影响BLOG的速度,解决办法如下:
如果你使用的是WordPress2.6版本,打开wp-config.php这个文件,找到

WP_POST_REVISIONS’ => true

这个变量有三个参数:
true, –1: 默认值,将存储文章每一次的修订;
false, 0: 不保存任何修订的版本,但自动保存功能依然有效;
>0 的整数: 最多保留的版本数量,超过此数的版本将被删除。

WordPress2.71用户可以打开wp-settings.php这个文件,修改方法同上。

但是已经产生的修订怎么去除呢?我们可以登录phpMyAdmin执行下面的SQL语句即可一次性删除:

DELETE FROM wp_posts WHERE post_type ="revision";

双引号必须是英文的,复制到SQL后可能会变成中文引号,请手动改一下。为了安全起见,最好先备份数据库。

转自布语博客:http://buyu.name/004.html

阅读全文

一段时间来都是使用MagicPostsView Plugin 这个插件来添加的我blog里的版权信息,有兴趣的朋友可以到这里下载,但这个插件还是不能满足我的个人需要,因为我只希望我自己原创的技术文章加上相应的信息,看来只能自己想想办法了

既然wordpress的theme都是php写的,自然可以通过代码来实现,既然是通过文章标题的内容里的关键字,其实就是需要判断关键字是否存在,如果存在则添加相应的信息,如果不存在则不用加入信息。用到的php中的strpos()函数,因为单个文章调用的是single.php这个文件,所以只需要在这个文件中做做手脚就行了。下面看我的代码

<?php
 $grand_parent = get_page($post->post_parent);
 $post_link = get_permalink($grand_parent);
 $post_title=get_the_title($post->post_parent);
 $findstr=iconv(‘gb2312′,’utf-8′,'[原创]’);
 $pos=strpos($post_title,$findstr);
 if ($pos) {
  $isorg01='<p>’.'<B>’.iconv(‘gb2312′,’utf-8′,’本文作者:深夜的蚊子’).'</B>’.'<br />’;
  $isorg02='<B>’.iconv(‘gb2312′,’utf-8′,’本文链接:’);
  $isorg03='<B>’.iconv(‘gb2312′,’utf-8′,’版权所有。转载时请以链接形式注明作者和原始出处及本声明,谢谢’).'</B>’.'</p>’;
  $post_url='<a href="’.$post_link.’"title="’.$post_title.’">’.$post_link.'</a>’.'</B>’.'<br />’;
 }  
?>

以上代码只需要添加到页面的开头部分就行,这部分是用来判断文章中是否含有关键字的,我自己预设的是判断是否含有“[原创]”字样。各位可以根据自己的需求做相应的调整

以上代码添加完毕之后,就可以在你需要的地方添加调用了,我加在了发布日期那行信息的下面了,代码如下

<?php echo $isorg01 ?>
<?php echo $isorg02.$post_url ?>
<?php echo $isorg03 ?>
有了这段代码之后,就会根据上面的判断来进行输出显示了。
到此,我所做的调整就算完毕了,上传覆盖后就可以查看修改结果了,本人php说平有限,欢迎高手拍砖。
阅读全文

最近一直关注wordpress的东西,而且很多人现在都在用wordpress的作为自己的blog,看到别人美化的页面真的羡慕及了,决定自己也研究研究,然后做些适合自己的东西出来,苦于自己不会php,前进的步伐真的是不算太快,一步步来吧。

先来说说我今天简单汉化的一点点东西,可能在一些高手来看这不算什么,我全当给自己的总结了,先上图一张

我就认为上面红色框里的东西看着不舒服,而且我认为是可以汉化的,我使用的theme是statement,喜欢的人可以去http://www.blogohblog.com/download/statement.zip这里下载。

这个主题的主页面是index.php这个文件,随便使用哪个文本编辑软件打开就好,首先在里面添加如下内容

<?php 
     $nocomments=iconv("gb2312","utf-8","没有评论"); 
     $onecomment=iconv("gb2312","utf-8","1条评论"); 
     $morecomment=iconv("gb2312","utf-8","%条评论");
?>
然后找到第10行的位置,内容如下

<div class="allinfos"><span class="date"><?php the_time(‘F jS, Y’) ?></span> | <span class="comments"><?php comments_popup_link(‘No Comments’, ‘1 Comment’, ‘% Comments’); ?> </span> | <span class="category">Posted in <?php the_category(‘, ‘) ?></span> <!– by <?php the_author() ?> –></div>

首先从上面可以看到发表作者是被注释掉的,去掉注释就可以显示发表的作者。我的改动如下

<div class="allinfos"><span class="date"><?php the_time(‘F jS, Y’) ?></span> | <span class="comments"><?php comments_popup_link($nocomments, $onecomment, $morecomment); ?> </span> | <span class="category"><?php echo iconv(‘gb2312’, ‘utf-8’, ‘发表在’)?> <?php the_category(‘, ‘) ?></span> <?php echo iconv(‘gb2312’, ‘utf-8’, ‘作者:’)?><?php the_author() ?> </div>

改好后上传覆盖原文件,最后的显示结果就是下面这个样子的

下面来解释一下上面的代码

在网上查,如果页面是utf-8格式的,那gb2312的中文是没有办法显示的,所以必须经过转码才可以,所以我在index.php的最上方定义了三个函数用于之后的调用

对于iconv("gb2312","utf-8","没有评论")就是说把“没有评论”字符从gb2312转成utf-8,这样页面上对于中文就不会是乱码了。

到此这部分简单的汉化工作就做好了。

阅读全文

使用wordpress已经有段时间了,一直在为我的blog收集更适合我的插件,为了增加统计功能我找到了statpress,这个是个英文的统计插件,但能统计的数据相对简单,无意间又发现了statpresscn这个中文插件,这个插件是在statpress的基础上改进来的,增加了很多有用的统计,具体下载地址在http://wordpress.org/extend/plugins/statpresscn/,有同样需要的朋友可以去下载。

在使用这个插件的过程中,发现了一个小问题,就是visits和yesterdayvisits在我的blog里统计不出来,但使用英文的statpress却可以统计出访问人数。同时还有一个不能满足我的需求,就是不能统计当前我的blog供发表了多少篇文章。既然这样不妨就自己动手改改。

对于统计访问人数,首先找到第2450上下,可以发现,中文版的对于day和yesterday的定义是这样的

中文版:
$today = $wpdb->get_var("select date(utc_TIMESTAMP()+ interval $blogtz hour)+0");
$yesterday = $wpdb->get_var("select date(utc_TIMESTAMP()+ interval $blogtzyesterday hour)+0");

英文版:
$today = gmdate(‘Ymd’, current_time(‘timestamp’));
$yesterday = gmdate(‘Ymd’, current_time(‘timestamp’)-86400);

这样把中文版的两行用//注释掉,加上英文版的这段代码,在我的blog里就正常了,所以,如果各位博主遇到同样的问题,不妨这样试试。

言归正传,下面来说增加统计发表文章总数的办法,首先还是找到2460行左右,可以看到作者注释的“//今天来访者数量”,在其上面添加如下几段代码

//add by 蚊子
//首先是定义需要查询的表名
$my_table_name = $wpdb->prefix . "posts";   

//统计文章总数,add by 蚊子
if(strpos(strtolower($body),"%totalpost%") !== FALSE) {
    $qry = $wpdb->get_results("SELECT count(ID) as pageview FROM $my_table_name WHERE post_status = ‘publish’ and post_type = ‘post’;");
    $body = str_replace("%totalpost%", $qry[0]->pageview, $body);
}

这样就可以在 外观->Widgets下的statpresscn里使用%totalpost%来调用了,还是感谢作者给我们带来这么好的一个插件。
阅读全文