基于安全性考虑,WordPress 的文章是不能直接运行写进去的 PHP 代码的,但是某些时候我们需要文章有提供一些动态内容的能力,这个限制就很让人不爽了。

幸运的是 WordPress 有强大的插件功能,更幸运的是已经有人写了插件让我们可以这么做。Mark SomervilleRun PHP 就是其中一个,并且工作得很好。

安装并激活 Run PHP 后,我们就可以在 WordPress 的文章里使用

<phpcode>
    echo 'Hello, This is from PHP!';
</phpcode>

这样的格式来插入 PHP 代码了,并且可以调用 WordPress 及其插件提供的函数。

大多数时候它工作得很好,但是因为这对伪标签跟 HTML 标签一样使用 <> 符号,所以在某些时候会出问题,例如

<a href="<phpcode>echo 'test';</phpcode>just a test">test</a>

这样就会造成很严重的问题。

为此,我把 runphp.php 里 26、27 两行的代码

while($phpstart = strpos($data, "&lt;".$tag."&gt;")) {
    $phpend = strpos($data, "&lt;/".$tag."&gt;");

改成了

while($phpstart = strpos($data, "[".$tag."]")) {
    $phpend = strpos($data, "[/".$tag."]");

修改之后,就应该使用 [phpcode] [/phpcode] 来插入 PHP 代码了,这样刚才那个问题就解决了。

其实,刚才那个在链接目标里使用 PHP 代码的情况是很有用,我们可以用

[phpcode]bloginfo('url');[/phpcode]

来代替文章里出现的自己 Blog 的 URI,这样可以保证在 Blog 的 URI 改变了的情况下,文章内容无需任何修改里面的链接也一样正常。虽然使用相对路径也可以解决这个问题,但是在一些新闻阅读软件里阅读 Blog 时相对路径是无法正常工作的。

Updated on 2009/02/22: 对于最新版的 WordPress 2.7.1 来说,Exec-PHPrunPHP 更值得推荐,因为不知何故 runPHP 不会出现在 WordPress 的插件管理里。并且不管是最新的 Exec-PHP 还是 runPHP,使用 PHP 代码的语法都是最正常的 <?php ?>,不会有本文提到的这些问题。

标签:,

相关日志

6 Responses to “在 WordPress 文章里运行 PHP 代码”

  1. Comme si tu veux Says:

    在wp文章里面显示php语句 今天加入中文WordPress Planet时,mulberry说俺的rss parse有问题。检查后发现是wp文章里面有php语句,解决办法如下; From:Rainux ...

  2. 网络核动力No Gravatar Says:

    最新版的怎么使用呢? 我启用插件后 文章的状态栏没有这个插件选项啊

  3. netputerNo Gravatar Says:

    刚好需要,3Q!!

  4. 流星No Gravatar Says:

    最新版的runphp上传后,插件里面会显示2.3.1和2.2.2两个版本共存,我同时启用了。 但是由于我用的编辑器是修改过的fckeditor-for-wordpress-plugin,所以没有显示那个代码。虽然新建页面的最下面有是否启用run php code的方框,我也选择了,但没发生效果,最后是在源代码状态下,手动添加搞定。 exe那个很奇怪,我启用了,没发生效果

  5. ZhuNo Gravatar Says:

    正为WP的固定URL发愁呢~

  6. MVPNo Gravatar Says:

    给个下载链接吧~

Leave a Reply