Echoing a URL to a link

时间:2016-01-21 作者:dotancohen

我找到了esc_url() 函数,我正在尝试了解如何处理Wordpress中的URL,然后再使用我的常规PHP策略。我看到third parameter 用于设置在其上运行的筛选器,默认值为“display”。这是为了显示在网页上。我在WP源代码中搜索了使用第三个参数的示例,只找到了一个示例:

$ grep -rP "esc_url.*\\([^\\)\\,]*\\,[^\\)\\,]*\\, ?\'?\\"?.*\\)" *
wp-includes/formatting.php: return esc_url( $url, $protocols, \'db\' );
所有其他匹配项grep 用于不相关的调用,例如使用另一个函数调用的返回值作为esc_url() 论点

Other than \'display\' and \'db\', what other values should be used and when? 我在WP源代码中看到了很多在href中使用显示值的地方,下面是一个示例:

$ grep -r esc_url * | grep href
wp-admin/themes.php: <td><a href="<?php echo esc_url( $delete_url ); ?>" class="button button-secondary delete-theme"><?php _e( \'Delete\' ); ?></a></td>
Should the \'display\' value really be used for an href attribute? 在我看来,它做了一些编码,我不相信在之后总是返回到正确的URL,特别是对于非ASCII URL。

“dispaly”过滤器用于实际URL,这是WP中的一个错误吗?还是我应该在自己的代码中使用“display”过滤器用于实际URL?

1 个回复
最合适的回答,由SO网友:Sumit 整理而成

不能使用其他值代替displaydb.

WordPress只需检查值display 和转换&\'报价至HTML 实体(包括所有其他字符)。如果你通过db 只需跳过这段代码。但是,WordPress建议使用esc_url_raw() 而不是传递第三个参数。

您可以使用esc_url_raw() 保存后端选项(如主题选项或插件设置)时esc_url() 在里面href 属性,浏览器可以很好地对其进行解码。

相关推荐

Disable escaping html

我在用SyntaxHighlighter Evolved 突出显示代码示例。E、 g。[csharp] string s = \"text\"; List<int> numbers = new List<int>(); [/csharp] 当我第一次保存它时,没关系,但编辑wordpress时,文本会更改为[csharp] string s = &quot;text&quot;; List&lt;int&am