当我注意到我的查询有问题时,我纯粹是偶然发现了这一点。看起来,Wordpress 回显的连字符的 ASCII 代码为 8211,而数据库中存储的连字符的 ASCII 代码为 45。
这给我带来了一个问题,因为我的网站允许访问者在他们的会话/元中“单击保存”帖子标题,然后通过数据库运行它以查看它是什么类型的帖子,但它一直找不到任何内容在数据库中。
有谁知道这是为什么?我如何解析字符串以将 8211 连字符替换为 the_title() 上的 45 连字符?
默认情况下,WordPress 通过 过滤所有帖子的标题和正文wptexturize
。除其他印刷细节外,这会将标准 ASCII 连字符的各种序列转换为适当的破折号,例如“--”转换为长破折号。
wptexturize
由 WordPress 通过过滤器the_title
和the_content
. 您可以删除它(改编自此答案的代码),例如:
remove_filter( 'the_title', 'wptexturize' );
Run Code Online (Sandbox Code Playgroud)
...在您的主题中functions.php
,或者在插件代码中。
但是,我建议这会(a)使您的标题看起来不太好(您将失去智能引号、漂亮的破折号等),并且(b)不太适合未来。如果其他东西开始过滤你的标题——一个新的插件,一个不同的主题——那么你就会遇到数据库不匹配的情况。
因此,我的方法是调整现有代码以使用帖子 ID 而不是标题。这是一个整数,永远不会改变,永远不会被过滤,并且在数据库中查找起来会更快(不仅因为它是一个整数,还因为它有一个唯一索引。)
归档时间: |
|
查看次数: |
1317 次 |
最近记录: |