PHP 从小部件返回不接受循环参数

PHP returned from widget doesn't take on loop parameters

我正在尝试制作一个非常具体的小部件,但我无法解决这个主要问题。该小部件创建一个循环来显示来自特定自定义 post 类型的信息。重要的是它应该允许开发人员创建自定义布局,但如果我不输入任何内容,也有一个默认值。我已经能够让大多数东西正常工作,包括允许 PHP 在插件中执行。但问题是,当我在小部件中创建自定义布局时,它开始从基本 post 而非我的自定义 post 类型中提取信息。但是,如果我将该代码直接放入 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;
?>

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

'echo' 函数打印一个字符串,它根本不打印 运行 php 代码。 'eval' 函数将执行 php 代码。

示例:

eval('echo "xyz";');将打印 xyz.