如何修改函数以显示表单textarea中的所有内容行?
问题解决:修改函数以列表形式显示文本域所有行
你的代码存在两个核心问题:一是循环中直接return导致仅返回第一行内容;二是没有构建列表的HTML结构,同时换行符处理不够健壮。以下是修复后的完整代码:
/* Returns texturized all quotes as list */ function cuqts_get_allqts() { // 获取存储的引用内容,处理空值 $quotes_content = get_option('cuqts_quotes'); if (empty($quotes_content)) { return '<p>暂无内容</p>'; } // 分割所有换行类型(兼容Windows/macOS/Linux) $quote_lines = preg_split('/\r\n|\r|\n/', $quotes_content); // 过滤空行 $quote_lines = array_filter($quote_lines, function($line) { return trim($line) !== ''; }); if (empty($quote_lines)) { return '<p>暂无有效内容</p>'; } // 构建列表项 $list_items = []; foreach ($quote_lines as $line) { // 文本格式化后添加到列表数组 $list_items[] = '<li>' . wptexturize(trim($line)) . '</li>'; } // 拼接成无序列表返回 return '<ul>' . implode('', $list_items) . '</ul>'; } /* Display All Quotes Shortcode */ add_shortcode('cuallqts', 'cuqts_get_allqts');
关键修改说明:
- 移除循环内的return:原代码在
foreach中直接return,函数会在第一次循环就终止,仅返回第一行内容。现在改为将每一行存入数组,最后统一拼接返回。 - 健壮的换行分割:使用
preg_split处理\r\n(Windows)、\r(旧macOS)、\n(Linux/macOS)所有换行类型,避免因系统差异导致分割失败。 - 过滤空行:通过
array_filter移除空行,避免生成空的列表项。 - 构建列表HTML:将每一行处理后包裹为
<li>标签,最后拼接成<ul>无序列表,实现列表形式展示。 - 完善空值处理:提前判断内容是否为空,返回友好提示而非
null,避免前端显示异常。
内容的提问来源于stack exchange,提问作者jfcby
相关产品推荐
相关产品推荐

