Wordpress 如何在转义 html 标签时使用换行符

Wordpress how to use line breaks while escaping html tags

我想将 Welcome to %sThanks for creating account on %1$s 分开显示在单独的行中。

翻译 RTL 网站上的短语时,他们目前 together/messed 卡住了。

protected function send_account_email( $user_data, $user_id ) {
            
  $to      = $user_data['user_email'];
  $subject = sprintf( esc_html__( 'Welcome to %s', 'my-plugin' ), get_option( 'blogname' ) );
  $body    = sprintf( esc_html__( 'Thanks for creating account on %1$s. Your username is: %2$s ',
    'my-plugin' ), get_option( 'blogname' ), $user_data['user_login'] );
}

你需要一个“换行符”来将它们分开!您可以使用 html 标签,例如:

  • br 标签
  • p 标签
  • h1 标签

仅举几例!

但您正在使用 esc_html__ 进行翻译和转义 html。为什么需要使用 esc_html__ 从数据库中检索博客名称?为什么?

也就是说,有一种白名单技术可以同时用于 translateescape unwanted html

使用 wp_kses 您可以为允许的 html 标签定义一个“白名单”并转义其余标签。

您可以阅读更多相关信息:

wp_ksesDocs


所以你的代码应该是这样的:

使用 <br> 标签:

protected function send_account_email( $user_data, $user_id ) {

  $whitelist_tags = array(

    'br' => array(),
  
  );
        
  $to      = $user_data['user_email'];

  $subject = sprintf(wp_kses(__('Welcome to %s <br>', 'my-plugin'), $whitelist_tags), get_option( 'blogname' ));

  $body    = sprintf( esc_html__( 'Thanks for creating account on %1$s. Your username is: %2$s ',
      'my-plugin' ), get_option( 'blogname' ), $user_data['user_login'] );
}

或使用 <p> 标签:

protected function send_account_email( $user_data, $user_id ) {

  $whitelist_tags = array(

    'p' => array()
  
  );
        
  $to      = $user_data['user_email'];
  
  $subject = sprintf(wp_kses(__('<p>Welcome to %s </p>', 'my-plugin'), $whitelist_tags), get_option( 'blogname' ));

  $body    = sprintf( esc_html__( 'Thanks for creating account on %1$s. Your username is: %2$s ',
      'my-plugin' ), get_option( 'blogname' ), $user_data['user_login'] );
}

或使用 <h1> 标签:

protected function send_account_email( $user_data, $user_id ) {

  $whitelist_tags = array(

    'h1' => array(),
  
  );
        
  $to      = $user_data['user_email'];

  $subject = sprintf(wp_kses(__('<h1>Welcome to %s </h1>', 'my-plugin'), $whitelist_tags), get_option( 'blogname' ));

  $body    = sprintf( esc_html__( 'Thanks for creating account on %1$s. Your username is: %2$s ',
      'my-plugin' ), get_option( 'blogname' ), $user_data['user_login'] );
}

注:

  • $whitelist_tags是数组,可以添加多个标签!
  • 此外,我只在您的 $subject 变量中使用了这些标签,如果需要,您也可以在 $body 变量中使用完全相同的技术!
  • 为了 translateescape unwanted html!
  • ,我还使用了 __()wp_kses 的组合而不是 esc_html__