当我尝试使用短代码保存页面时,WordPress 编辑器出现故障

The WordPress editor breaks when I try to save a page with a shortcode

我需要帮助。我不明白发生了什么。我创建了一个简码。他在那里

 function mainslider_function() {
    function lesson_slider() {

        $open_div = '<div class="autoplay">';
        $close_div = '</div>';

        if( have_rows('test_fields', 'option') ):
            echo $open_div;
            while ( have_rows('test_fields', 'option') ) : the_row();
                $sub_value = get_sub_field('image');
                echo '<div class="slide"><img src="'.$sub_value.'"></div>';
            endwhile;
            echo $close_div;
        endif;
    }
return lesson_slider();
}

并且有效。但仅限于正面。尝试使用此短代码编辑页面时。 WordPress 编辑器停止工作。我明白问题是我在一个函数中使用了一个函数。因为当我测试这段代码时:

 function mainslider_function() {
    $test = 'test message';

    return $test;
}

一切正常。如果我喜欢这样

function mainslider_function() {
    function test(){
        $test = 'test message';
        echo test;
    }
    return test();
}

编辑器停止工作。告诉我,为什么会这样?

您不需要内部函数。您可以连接字符串部分或使用 output buffering.

对于后者,这变成:

function mainslider_function()
{
  ob_start();

  if (have_rows('test_fields', 'option')) {
    echo '<div class="autoplay">';
    while (have_rows('test_fields', 'option')) {
      the_row();
      $sub_value = get_sub_field('image');
      echo '<div class="slide"><img src="', $sub_value, '"></div>';
    }
    echo '</div>';
  }

  return ob_get_clean();
}

注意:在此过程中还进行了一些代码清理。