我尝试将type输入字段的属性更改为number(hidden默认情况下它们具有类型)并添加readonly="readonly",但它对输出 HTML 没有影响。属性和以前一样。函数触发正常,因为在我添加编码之前,它在页面上显示了错误的字符。我有合适的 CSS 来格式化只读输入,所以视觉效果不是问题,我还将使用更多条件来仅查找特定的输入标签,但现在我想让这段代码正常工作:add_filter('the_content', 'acau_lock_input');function acau_lock_input($content) { $dom = new DOMDocument(); @$dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8')); foreach ($dom->getElementsByTagName('input') as $node) { $node->setAttribute('type', 'number'); $node->setAttribute('readonly', 'readonly'); } $newHtml = $dom->saveHtml(); return $newHtml;}
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
Nigel Ren 帮我找到了问题所在。解决方案是荒谬的,the_content
WordPress 的过滤器只是放置在当前页面文本区域中的任何内容,如在编辑器中可见。
它与输出页面的完整 HTML 结构无关,因此虽然错误的编码会破坏整个页面的文本,但$content
仅返回一个短代码,因为这是在页面编辑器中。
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消