我正在接受一些关于国际化和数据转义的培训。但我觉得我必须摆脱标题属性。我在助手函数中有以下代码。。。
echo \'<h2 class="m-title">\';
printf(
esc_html__(\'%s\',\'tn\'),
\'<a href="\'.esc_url(get_permalink()).\'" title="\'.the_title_attribute().\'">
\'. esc_html(get_the_title()).\'
</a>
\'
);
echo \'</h2>\';
除了title属性外,它似乎一切正常。输出如下。。。。
Hello world! Hello world!
因为DOM正在加载以下内容:
<h2 class="m-title">
Hello world!
<a href="http://local.dev.site/mysite/?p=26" title="">
Hello world!
</a>
</h2>
我打电话错在哪里
the_title_attribute()
?
According to the docs, 它已经逃走了。
谢谢你的提示!
最合适的回答,由SO网友:WebElaine 整理而成
一些屏幕阅读器会阅读标题属性和链接文本,这样访问者就会听到“Hello world!Hello world!”因此,除非您的真实标题属性与链接文本不同,并为屏幕阅读器的用户提供额外的上下文,否则您可能希望不要使用标题属性。
或者,你应该能够重写所有内容,这样你就不用重复
<?php // your other code here ?>
<h2 class="m-title">
<a href="<?php echo esc_url(get_permalink()); ?>" title="<?php the_title_attribute(); ?>">
<?php the_title(); ?>
</a>
</h2>
通过这种方式,您可以混合HTML和PHP,但它允许您立即输出两者,因此
the_title_attribute()
正在正确的位置输出,而不是在解析所有其他内容之前。您可以添加其他
esc_html__()
调用包装在每一组PHP标记中,但不清楚为什么像这样的字段需要这些标记
the_permalink()
.