基于安全性考虑,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, "<".$tag.">")) {
        $phpend = strpos($data, "</".$tag.">");

改成了

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

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

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

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

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

Tags: ,

One Response to “在 WordPress 文章里运行 PHP 代码”

  1. Comme si tu veux Says:

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

Leave a Reply