这是原始代码
// the email address
if ( isset( $this->stored_settings[ 'email' ] ) and '' != $this->stored_settings[ 'email' ] ) {
$link_href = antispambot( esc_html( $this->stored_settings[ 'email' ] ) );
if ( isset( $this->stored_settings[ 'email_text' ] ) and '' != $this->stored_settings[ 'email_text' ] ) {
$link_text = $this->stored_settings[ 'email_text' ];
} else {
$link_text = $link_href;
}
$contact_list[] = sprintf(
'<li id="scb-email"><a href="mailto:%s"><img src="%sassets/images/email_%s.svg" width="%d" height="%d" alt="%s" /><span>%s</span></a></li>',
$link_href,
$this->plugin_root_url,
$this->current_icon_type,
$this->current_icon_size,
$this->current_icon_size,
__( 'E-Mail', $this->plugin_slug ),
esc_html( $link_text )
);
}
我将此行中的代码更改为:
<li id="scb-email"><i class="fa fa-envelope"><a href="mailto:%s"></a></i></li>
有人告诉我,我必须在 a tags 中添加哪些内容才能显示电子邮件的文字?
答案 0 :(得分:1)
必须修改sprintf()
来电。每个%s
都是后来参数的占位符,例如$link_href
,$this->plugin_root_url
等旧代码行有7 %s
个,因此调用有8个参数(1个字符串和7个其他参数放入占位符) 。到目前为止,您的新行只包含一个%s
,因此sprintf()
只会获得两个传递的变量,即您的新行和$link_href
。
现在您希望<a>
代码中包含该电子邮件,因此您必须在这些代码中添加另一个%s
,并在sprintf()
的函数调用中添加另一个参数。
然后最终结果应如下所示:
$contact_list[] = sprintf(
'<li id="scb-email"><i class="fa fa-envelope"><a href="mailto:%s">%s</a></i></li>',
$link_href,
$link_href
);
如果您想要旧代码在esc_html( $link_text )
标记之间放置的内容,则可以为<span>
交换最后一个参数。