2017-07-15 28 views
0

這是原來的代碼如何更改php代碼以顯示文本?

 // 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> 

你能有人告訴我,我必須投入一個標籤用於顯示文本電子郵件?

回答

1

必須修改sprintf()調用。每個%s是稍後參數的佔位符,例如$link_href, $this->plugin_root_url等。舊的代碼行有7 %s'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>標籤之間有什麼舊代碼。

+0

Got it!謝謝你的好解釋:-) – Martin