点击数:0
今天在浏览自己写的文档的时候,发现复制粘贴命令执行后报错,仔细一看,命令中的–在页面中显示为单横线-,结合网上的几个方法,找了一个最简单适合的方案,问题解决。
现象:
譬如WordPress后台编写的代码为:
./config shared –openssldir=/data/install/openssl –prefix=/data/install/openssl
但是编写完发布后,在浏览器中显示为:
./config shared -openssldir=/data/install/openssl -prefix=/data/install/openssl
莫名的少了一个横杠,就会产生问题
原因:
网上的说法,主要是WordPress的标题或者正文当中,如果带有横杠“-”的话,查看页面源代码title的时候就会发现横线会被转义为”–”,正文就会看到少了一个横杠。
解决方案:
方法一:禁用所有的 WP 转义
wordpress 自带一个专一的钩子 wptexturize,很多地方都用到了这个钩子,具体可以看看 wp 的 wp-includes/formatting.php 中看看。我们可以通过以下代码(取自水煮鱼)来取消掉这个转义:
add_filter( 'run_wptexturize', '__return_false' );
我是增加在如下图示的位置:
方法二:禁用部分的 WP 转义(推荐)
为了解决本文标题描述的这个问题,可以只是禁止 wptexturize 对标题的转义:
/**
* WordPress 标题中的横线“-”被转义成“–”的问题 - 龙笑天下
* https://www.ilxtx.com/wordpress-html-entity-decode-title.html
* 20181213 更新:wp_title、single_post_title、single_cat_title、get_the_title、single_tag_title
*/
remove_filter('the_title', 'wptexturize');
remove_filter('wp_title', 'wptexturize');
remove_filter('single_post_title', 'wptexturize');
方法三:把下方代码复制放到 function 文档里:
function HTML_entity_decode_title($title)
{
$title = str_replace("–", "-", $title);
$title = html_entity_decode($title);
return $title;
}
add_filter('the_title', 'html_entity_decode_title');
add_filter('wp_title', 'html_entity_decode_title');