HTML标记类或id属性不能具有非字母数字值,因此您需要清理标题以创建适当的标题。你可以使用sanitize_html_class
这样做。或者,对于相对卫生处理,您可以使用下面的方法。
function wpse_sanitize_html_class( $class ){
//Strip out any % encoded octets
$sanitized = preg_replace( \'|%[a-fA-F0-9][a-fA-F0-9]|\', \'\', $class );
//Limit to A-Z,a-z,0-9,_,-
$sanitized = preg_replace( \'/[^A-Za-z0-9_-]/\', \'-\', $sanitized );
return $sanitized;
}
在生产中使用它-
<a href="#<?php
echo wpse_sanitize_html_class( get_the_title() ); ?>"><?php
echo get_the_title();?>
</a>
以及内容包装器元素,id属性也需要清理。
<div id="<?php
echo wpse_sanitize_html_class( get_the_title() );?>"><?php
// the content ?>
</div>
简单解决方案可以使用post id而不是title。像这样-
<a href="#<?php the_ID(); ?>"><?php echo get_the_title(); ?></a>
<div id="<?php the_ID(); ?>"><?php // the content ?></div>