0

我正在尝试在文本小部件中执行 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 行抛出错误 which eval("?"."?".$html) ,这是确切的错误

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

这是我正在写的条件

    <?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 } ?>

有人可以告诉我我在哪里犯了错误。我要关闭所有标签

谢谢

4

2 回答 2

1

如果您想在 wordpress 小部件中执行 php 代码,只需将以下代码更改为主题函数文件

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

于 2016-02-22T17:21:03.617 回答
0

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

于 2013-06-01T20:59:23.527 回答