变量中包含PHP,而另一个变量中包含HTML

时间:2019-05-25 07:02:08

标签: php wordpress

我想添加一个变量,该变量在另一个变量内的HTML中包含一个函数(无论是WordPress还是自定义函数)。问题是,当我连接时,它会弹出在div容器的前端之外,我需要将其放在容器内。

例如此处所示,我希望在这些div中一般生成“ $ stay_put”或PHP:

function sort_sections( $sections ) {
      $sections = explode(',', $sections);
      $output = '';
      /* $stay put needs to be able to hold any function */
      $stay_put = wp_list_pages();
      if ( empty( $sections ) ) {
          return $output;
      }
      foreach( $sections as $section ) {
        switch ( $section ) {
        case 'section_a':
            $output .= '<div>Section A</div>';
            break;
        case 'section_b':
            $output .= '<div>Section B</div>';
            break;
        default:
            break;
        }
      }
      return $output;
  }

我想出了什么,但在容器外部显示了变量:

$stay_put

foreach( $sections as $section ) {
  switch ( $section ) {
  case 'section_a':
      $output .= '<div>' . $stay_put . '</div>';
      break;
  case 'section_b':
      $output .= '<div>' . $stay_put . '</div>';
      break;
  default:
      break;
  }
}

如果有人可以帮助您,

谢谢。

编辑:解决方案

function render_sections( $sections ) {
      $sections = explode(',', $sections);
      $output = '';
      $stay_put = wp_list_pages(['echo' => false]);
      if ( empty( $sections ) ) {
          return $output;
      }
      foreach( $sections as $section ) {
        switch ( $section ) {
        case 'section_a':
            $output .= '<div>Section A';
            $output .= $stay_put;
            $output .= '</div>';
            break;
        case 'section_b':
            $output .= '<div>Section B';
            $output .= $stay_put;
            $output .= '</div>';
            break;
        default:
            break;
        }
      }
      return $output;
  }

1 个答案:

答案 0 :(得分:0)

示例代码的主要问题是您想返回输出,但是对wp_list_pages的调用不会返回所需的信息,而是直接回显它。如果要将wp_list_pages的结果添加到输出中,则必须向wp_list_pages添加一个参数。根据{{​​3}},您必须将echo设置为false

要在每个部分的div之后添加它,请参见以下代码:

function render_sections( $sections ) {
      $sections = explode(',', $sections);
      $output = '';
      $stay_put = wp_list_pages(['echo' => false);
      if ( empty( $sections ) ) {
          return $output;
      }
      foreach( $sections as $section ) {
        switch ( $section ) {
        case 'section_a':
            $output .= "<div>Section A</div>';
            $output .= $stay_put;
            break;
        case 'section_b':
            $output .= '<div>Section B</div>';
            $output .= $stay_put;
            break;
        default:
            break;
        }
      }
      return $output;
  }

请注意,我已将函数名称从sort_sections更改为render_sections,因为这似乎更准确地描述了其功能(干净的代码)。