从widget返回的PHP不接受循环参数

时间:2017-04-12 23:33:55

标签: php wordpress widget

我正在尝试创建一个非常具体的小部件,但我无法解决这个主要问题。窗口小部件创建一个循环以显示特定自定义帖子类型的信息。重要的是,它应该允许开发人员创建自定义布局,但如果我不输入任何内容,也会有默认布局。我已经能够完成大部分工作,包括允许PHP在插件中执行。但问题是,当我在窗口小部件中创建自定义布局时,它开始从基本帖子而不是我的自定义帖子类型中提取信息。但是,如果我将该代码直接放入PHP文件而不是小部件中,它将按预期执行。这是前端代码:

<?php

echo $before_widget;
echo $before_title . $title . $after_title;

//The Loop
$args = array( 'post_type' => 'ctas', 'posts_per_page' => $num_ctas );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
  <div class="<?php echo $cta_class; ?>">
    <?php
      if(!empty($cta_layout)){
        echo $cta_layout; //this is the code entered into the widget that doesn't execute as expected
      } else { ?>
    <h3><?php the_title(); ?></h3> <!--this part works fine-->
    <?php the_content(); ?>
    <?php } ?>
  </div>
<?php endwhile;

//After The Widget
echo $after_widget;
?>

1 个答案:

答案 0 :(得分:0)

echo $cta_layout;替换为eval($cta_layout);;

&#39;回波&#39;函数打印一个字符串,它根本不运行php代码。 &#39; EVAL&#39;函数将执行php代码。

示例:

eval(&#39; echo&#34; xyz&#34 ;;&#39;);将打印xyz。