如何使用PHP将动态生成的HTML内容存入变量?
解决方法:将动态HTML内容写入WordPress的$response变量
要实现把动态生成的HTML内容写入$response变量,你需要初始化变量并循环拼接内容,同时注意WordPress函数的使用逻辑(避免直接输出内容,改用返回值的函数),具体修改如下:
首先初始化$response为空字符串,然后在while循环里逐步拼接每个文章对应的HTML代码:
// 先初始化空字符串 $response = ''; if($ajaxposts->have_posts()) { while($ajaxposts->have_posts()) : $ajaxposts->the_post(); // 获取当前文章的相关数据 $img_url = get_the_post_thumbnail_url(get_the_ID()); $permalink = esc_attr(get_permalink()); $title = get_the_title(); // 拼接单个speaker的HTML内容到变量中 $response .= ' <li> <a href="'.$permalink.'"> <div class="speaker-img"> <img src="'.$img_url.'"> </div> <div class="speaker-name"> <p>'.$title.'</p> </div> <div class="speaker-city"> <p>Fribourg</p> </div> </a> </li>'; endwhile; // 给拼接好的内容加上外层的ul容器 $response = '<ul class="speakers-list">'.$response.'</ul>'; } else { $response = 'empty'; } echo $response; exit;
关键注意点:
- 初始化变量:必须先给$response赋值空字符串,否则循环拼接时会触发未定义变量的错误
- 使用返回值函数:
- 用
get_permalink()代替the_permalink()——前者返回链接字符串,适合存入变量;后者会直接输出内容,无法用于拼接 - 用
get_the_title()代替the_title(),同理避免直接输出内容到页面
- 用
- 字符串拼接:使用
.=操作符逐步累加HTML内容,确保循环结束后所有动态生成的内容都存入$response - 安全处理:用
esc_attr()处理链接属性,避免潜在的XSS安全风险
内容的提问来源于stack exchange,提问作者userName
相关产品推荐
相关产品推荐

