WordPress - 在主题选项面板中执行PHP

时间:2012-02-24 14:12:01

标签: php wordpress wordpress-theming

我为客户创建了一个主题选项面板,但是他们希望能够在textareas中输入PHP代码并在前端执行它。

然而,当他们输入代码时,它在前端无法正常显示,请参阅以下两个屏幕截图:

http://i.imgur.com/alOAD.png

http://i.imgur.com/pYhW0.png

看起来代码在前端显示时被剥离。它使用以下代码显示:

    <?php global $options;
foreach ($options as $value) {
    if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
}
?>

<?php echo $ag_footer_top; ?>

如何让它正常工作?有可能吗?

如果我在主题选项中输入以下内容:

<?php wp_nav_menu( array( 'theme_location' => 'first','fallback_cb'=> ” ) ); ?>

它被保存到数据库中:

<?php wp_nav_menu( array( \'theme_location\' => \'first\',\'fallback_cb\'=> ” ) ); ?>

它在前端显示为:

\'first\',\'fallback_cb\'=&gt; ” ) ); ?&gt;

5 个答案:

答案 0 :(得分:5)

首先,您必须使用以下内容阻止WordPress为您的内容添加斜杠:

update_option('my_option',stripslashes($_POST['my_option']));

另一件事是你希望你的代码被执行......好吧我不知道怎么做到这一点,但是很多插件提供了这个功能,比如

Linkable Title Html and Php Widget

你应该下载插件并弄清楚它是如何工作的。

现在从数据库中获取该字段的内容,并尝试以某种方式解析它。

答案 1 :(得分:2)

在评估/显示代码之前,使用stripslashes来取消字符串。

答案 2 :(得分:0)

您应该将替换为''

答案 3 :(得分:0)

你可以使用PHP的这个功能

PHP: eval();

你可以把textarea中的代码保存到选项中作为字符串,每当你想执行它时,从选项中检索并将它传递给eval。

<强>感谢

<强> -Shak

答案 4 :(得分:0)

我个人使用Exec-PHP。您的客户应该很容易使用。