PHP字符串添加自定义类:Geodirectory类名冗余问题求助
看起来你在给GeoDirectory输入框生成自定义类名时,遇到了HTML属性解析的bug——生成的代码里意外把Visa当成了游离的HTML属性,而你只想要American Express作为类名对吧?我来帮你梳理下可能的原因和解决办法:
先排查类名的数据源问题
首先确认你用来提取类名的输入框名称字段,是不是本身就包含了American Express Visa这样的内容?如果是直接把这个完整字符串塞进class属性里,浏览器会把空格后的Visa解析成另一个独立属性,就会出现<class="American Express" Visa>这种错误格式。你需要先对数据源做处理,只保留需要的部分。修改类名生成的代码逻辑
假设你是通过GeoDirectory的钩子(比如geodir_custom_field_output)动态生成类名,那你需要在代码里对字符串做过滤或截取。举个实际的PHP代码示例:// 假设$field_label是获取到的输入框名称,比如"American Express Visa" // 方法1:直接移除末尾的" Visa" $target_class = str_replace(' Visa', '', $field_label); // 方法2:如果是固定取前两个单词组成类名 $name_parts = explode(' ', $field_label, 2); $target_class = $name_parts[0] . ' ' . $name_parts[1]; // 最后输出到HTML时记得转义属性值 echo '<input type="text" class="' . esc_attr($target_class) . '" ... />';核心是确保
class属性的值是被引号完整包裹的单一字符串,避免浏览器把多余内容解析成额外属性。检查是否有重复的类名处理逻辑
有时候可能是主题或其他插件里的代码,和你自己的逻辑重复处理了类名,导致Visa被错误追加到了属性外面。可以排查下相关的钩子函数,看看有没有重复添加类名的情况。试试GeoDirectory内置的自定义类选项
部分GeoDirectory字段类型支持在后台直接设置自定义类名,你可以进入字段编辑页面,找找有没有“CSS类”这类输入项,直接在这里填写American Express,这种方式比动态生成更稳妥,也不容易出错。
内容的提问来源于stack exchange,提问作者David Weinstein

