当我尝试使用短代码保存页面时,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();
}
注意:在此过程中还进行了一些代码清理。
我需要帮助。我不明白发生了什么。我创建了一个简码。他在那里
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();
}
注意:在此过程中还进行了一些代码清理。