在wordpress文本小部件中执行php代码

时间:2013-06-01 20:32:29

标签: php wordpress

我正在尝试在文本小部件中执行if条件。我把它添加到我的主题功能文件

function execute_php($html){
 if(strpos($html,"<"."?php")!==false){
      ob_start();
      eval("?".">".$html);
      $html=ob_get_contents();
      ob_end_clean();
 }
 return $html;   

}  的add_filter( 'widget_text', 'execute_php',100);

但是当我写这样的php条件时,它在第90行抛出一个错误eval(“?”。“?”。$ html)这里是确切的错误

解析错误:语法错误,/ functions.php(90)中的意外“{”:第13行的eval()代码

这是我写的条件

    <?php if (is_post(43)) { ?>
 <div class="book">
  <a class="button" href="/product1">Buy Now</a>
 </div>
<?php } elseif (is_post(37)) { ?>
  <div class="book">
  <a class="button" href="/product2">Buy Now</a>
 </div>
<?php } elseif (is_post(30)) { ?>
 <div class="book">
  <a class="button" href="/product3">Buy Now</a>
 </div>
<?php } else (is_post(24)) { ?>
  <div class="book">
    <h5>Buy Now</h5>
    <select class="sportsman-colors" onchange="document.location.href=this.value">
     <option value="-1" selected>Choose Color</option>
     <option value="/product4">Green</option>
     <option value="/product6">Red</option>
    </select>
 </div>
<?php } ?>

有人可以告诉我我在哪里弄错了。我正在关闭所有标签

由于

3 个答案:

答案 0 :(得分:1)

如果你想将php代码执行到wordpress小部件,那么只需将以下代码更改为主题功能文件

add_filter('widget_text','execute_php',100);
function execute_php($html){
     if(strpos($html,"<"."?php")!==false){
          ob_start();
          eval("?".">".$html);
          $html=ob_get_contents();
          ob_end_clean();
     }
     return $html;
}

您可以在http://www.helpersways.com/2015/09/use-php-code-in-wordpress-widget-without-plugin.html

上阅读更多信息

答案 1 :(得分:0)

您可以使用像Widget Logic这样的插件,并在单独的文本小部件下添加is_post(24)之类的条件

答案 2 :(得分:0)

你试图为else语句提供一个条件,else语句不接受条件,因为它只是作为最后的手段触发。

所以要么改变:

<?php } else (is_post(24)) { ?>

要:

<?php } elseif (is_post(24)) { ?>

如果条件为真,则会触发它,或者:

<?php } else { ?>

如果上述条件均不属实,则会触发它。