在WordPress上执行php代码
Mar 29th
本来在做极光监测页面的时候就需要执行php代码,但最后还是给我用最土鳖的办法绕过去了(在别的地方cron一个php,定时生成几个gif图像,然后引用之)。结果今天折腾实验室的降雨预报页面的时候,总算绕不过去了。本来想着说这应该是个小意思,我装个exec-php不就可以了嘛。结果exec-php竟然还要折腾配套的各种东西,搞到最后竟然还不能用,真是郁闷。于是只好查查看有没有替代的方法。幸好万能的Wordpress还是可以用不太麻烦的方法解决这一难题的,这一方法就是shortcode,适用于规模不大的php程序。
简单地说就是把你的php程序植入到主题里面,然后在文章里用形如
[my-shortcode type="dog"]
的形式调用之。
首先修改一下主题里的function.php,在末尾添加这一行:
include_once(“shortcode.php”);
我们所有的代码就放在shortcode.php里面。当然你想全写在function.php里也没问题。
要把一个php程序写到shortcode里很容易,只要把它弄成一个函数(如果它还不是函数的话),然后注册这个函数即可。比如下面的shortcode.php
function my-shortcode-function($atts){ extract(shortcode_atts(array('type' => 'cat'),$atts)); // 设定参数type的默认值为cat if ($atts['type']=='cat') echo "Miao"; elseif ($atts['type']=='dog') echo "Wang"; // 函数其他部分 return; } add_shortcode('my-shortcode', 'my-shortcode-function'); // 注册my-shortcode-function到my-shortcode
于是一个shortcode就做好了。如果我想让它返回Wang,只需要在写文章的时候用
[my-shortcode type="dog"]
就可以了。
wp和php的两个小问题及其解决方法
Jul 24th
1. php升级后图像生成出错的问题
7月23日,宇宙驿站更新了服务器,php也从5.2.3升级到5.3.2。不过升级了以后,晴天钟的图像生成却出了问题,生成的图像有许多地方没法显示,error_log提示“imagefilledarc() expects parameter 9 to be long”,但奇怪的是在原来的5.2.3运行是没有问题的呀,于是去php.net翻了官方手册,仔细读了读有关条目,原来是php中imagefilledarc函数指令有一个更改,我原来的命令是:
imagefilledarc($im,$xc+1,10,15,16,20,60,$white,IMG_ARC_FILL);
而php将IMG_ARC_FILL替换成了IMG_ARC_PIE,但却没有给出显著提示,似乎也没有给出一个向下兼容的解决方案。只要把以上的行改为
imagefilledarc($im,$xc+1,10,15,16,20,60,$white,IMG_ARC_PIE);
就好了。
2. WordPress无法更新插件的问题
不知道从什么时候开始,我在宇宙驿站的3个WordPress博客就无法自动检测WordPress及插件的更新,查看Update的时候总是显示“all up to date”,又可以肯定服务器到wordpress.org的连接没有问题,实在是伤脑筋。这次迁移过程中发现了原因,原来是宇宙驿站的PDO模块出现了问题,导致WordPress的更新检测模块无法正常工作。
由于PDO模块的安装或修复需要管理员权限,如果有朋友的WP博客因为PDO模块的原因无法自动检测更新的,可以用以下两个插件代替:InstantUpgrade(用于WP程序的更新)以及One Click Plugin Updater(用于WP插件的更新),它们都不需要PDO模块的支持。
WordPress用户互动使用头像的方法
Jul 17th
看了看日历,发现马上就要到我和WordPress相识五周年了,可喜可贺!
最近装了新浪连接和豆瓣连接之后发现一个问题,原来WordPress本身的用户系统是不带头像存储功能的,除了清一色的Mystery Man和自动生成的怪兽图像以外,就没有可以自己定制的样式!真奇怪,这难道是WordPress设计的缺漏?于是立马搜了一下,原来答案很简单,WordPress是通过Gravatar这个头像集成网站来显示头像的。只要去Gravatar注册一个用户并上传头像(WordPress.com用户无需再注册新用户),以后不管去到哪个WordPress,只要使用那个邮箱地址留言,都可以显示头像了—— 这的确是个便捷的设计!
P.S. 这原来是WordPress 2.6就加入的功能,我火星了……
参考资料:
- http://wangyueblog.com/2008/08/15/wordpress-gravatar-used/
- http://www.underone.com/2008/07/17/more-gravatar-at-wordpress-26/
最新评论 Recent Comments