我在一个网站上工作,主要由类别管理。其中两个类别中有撇号。。。例如“Joe’s Place”和“Tina’s Lounge”。(实际标题已更改,以下是示例…)Slug类别为“joes place”和“tinas lounge”。
客户要求现场提供面包屑。。。不幸的是,每当类别的名称中有撇号时,面包屑调用就会失败。失败发生在调用get\\u cat\\u ID.Oh时,当面包屑失败时,整个页面都会失败。这是我的面包屑代码片段。。。
if ( is_category() )
{
// single_cat_title() Displays or returns the page title if a category
// or tag archive is queried.
$catTitle = single_cat_title( "", false );
echo \'<!-- $catTitle:\'.$catTitle." -->"; // troubleshooting line...
$cat = get_cat_ID( $catTitle );
echo \'<!-- $cat: \'.$cat."-->"; // troubleshooting line
echo "<li> ". get_category_parents_custom( $cat, TRUE, \' » \' ) ."</li>";
}
get\\u cat\\u ID只返回
0
. 呃哦。。。当我仔细查看疑难解答代码时,我可以看到$catTitle返回
Joe’s Place
哎哟关于撇号的具体格式,目前还不清楚。当我在codex核心中越来越深入地挖掘时,我可以看到get\\u cat\\u ID调用一个函数get_term_by()
警告“$值不是对‘name’$字段的HTML转义。如果需要,您必须自己进行转义。”我想这是我的问题。但是,“HTML转义”字符串意味着什么呢?
我试过了$catTitle2 = htmlspecialchars_decode($catTitle);
不,去那里<我试过了$catTitle2 = esc_html($catTitle);
不,去那里。在前面的两个函数中,字符串都不会有任何变化。
我试着手动将字符串“Joe’s Place”引入通话,哇,这完全奏效了。
同时,我将执行一个简单的字符串替换函数,但这看起来像是一种黑客行为。
是否有php或wordpress函数可以转换字符串’
回到一个简单的撇号?解决此问题的正确方法是什么?
更新:我偶然发现this posting: 我的快速修复程序包括此处建议的一些代码,并进行了一些小的修改:
$catTitleCorrected = html_entity_decode(str_replace("’","\'",$catTitle));