我想添加一个变量,该变量在另一个变量内的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;
}
答案 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
,因为这似乎更准确地描述了其功能(干净的代码)。