如何更改PHP代码来显示文本?

时间:2017-07-15 16:17:32

标签: php wordpress plugins

这是原始代码

        // 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 中添加哪些内容才能显示电子邮件的文字?

1 个答案:

答案 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>交换最后一个参数。