Yep, you can escape it as normal HTML, like so:
<?php echo esc_html( $email ); ?>
For the mailto link, you can use esc_url. Just make sure you include mailto: into the URL, e.g.:
<a href="<?php echo esc_url( 'mailto:' . $email ); ?>">
So a fully escaped mail link would look like this:
<a href="<?php echo esc_url( 'mailto:' . $email ); ?>"><?php echo esc_html( $email ); ?></a>
Related Posts:
- Sanitizing, Validating and Escaping in WordPress (Plugin)
- Escaping and sanitization
- How to safely sanitize a textarea which takes full HTML input
- How to allow HTML tags into WP Bakery (formerly Visual Composer) `textfield` parameter
- Should messages in WP_Error already be html escaped?
- When do I need to use esc_attr when using WordPress internal functions
- How do I sanitize a javascript text?
- wp_specialchars and wp_specialchars_decode in a shortcode plugin
- Escape when echoed
- Should you escape hardcoded URLs?
- Do We Need to Validate, Sanitize, or Filter Simple Numerical Superglobals (Cookies and Post)?
- MITM risk of not sanitizing?
- Is Wrapping intval() Around esc_attr() Redundant for Escaping Input?
- CSS from textarea in options page to frontend what to do
- How to sanitize uploaded file filename from a plugin?
- WordPress stripping away backslashes from HTML
- How to be escape Variables and options when echo?
- Sanitize $_GET variable when comparing
- Can we validate data from jquery
- Save selectlist value (taxonomy) in wp:wp_set_object_terms
- Auto post with filling templates from external data and update periodical
- How can I properly sanitize the update_option in WordPress?
- What form should the $query media query array have for an Elementor page builder function? [closed]
- Private Page View Counter
- WooCommerce: Force coupon for existing/registered customers [closed]
- Plugin Activation Error – The plugin generated 22 characters of unexpected output during activation
- Plugin Admin Menu Boiler Plate
- How can I add IP address to my post?
- REST API can’t get the response manually
- Super slow plugin page (lots of error 500)
- How to make a dynamic css class whose name changes every visit to confuse scraper
- serverSideRender does not render “preview” html inside Gutenberg block
- How use wp media upload liberary in react components?
- Add_rewrite_endpoint doesn’t work with post name permalink structure
- How to notify wordpress instalation about my plugin update?
- Is it possible not to load theme on a specific page in wordpress?
- How to change shortcode’s default theme?
- Integer in Array returns null
- Plugin onclick button activate other plugin
- composer not working on my plugin when i upload it to my website
- wc_get_template new template does not showing up
- How to select a paragraph other than the 1st to be the post’s excerpt?
- Moving Jetpack buttons to appear below the first H2 title on all project/post pages [closed]
- Send email to multiple addresses on Contact Form 7, but exclude personal details on all but one
- How can I support plugins in a custom theme?
- Display site language setting in source code
- Show icons or badges under title on product archives/category pages
- How to get theme’s info from wordpress.org/themes using api.wordpress.org?
- Override/ignore CSS from active theme as not to interfere with my custom CSS
- WordPress Custom Pages that work with Plugins?
- posts from multiple post types in one slider
- How to automatically redirect to custom admin menu after plugin activation?
- How to use the CSS of the WordPress core in the development of my administration page?
- Redeclare function after plugin activation
- add_submenu_page returns null
- What is the WordPress approach to custom data?
- Conditional Shipping Options if Certain Products are in Cart WooCommerce
- Readable titles in mobile
- How to do the simplest possible frontend ajax call from a plugin?
- The XXX plugin has been deactivated due to an error: The plugin does not have a valid header
- How can I add “last updated” in plugin descripton?
- get_edit_post_link() not working on wp-cron
- get_option / wp_localize_script Not Working in OOP Plug In
- New bulk action to resend welcome emails
- Get site url and updates data, then use them
- How to have a gallery in which each image’s caption is a whole “post”?
- I receive taxonomy id
- How do we update a custom file upload field with the Advanced Custom Field plugin?
- WordPress won’t allow for updates to plugins or WordPress Core
- WordPress Stock Update Programatically
- Loading a plugin’s js file from functions.php
- Woocommerce Backend Search by Title and SKU
- I Setup Rate My Post Plugin On Site But Now Got Issues In Google Webmasters
- How to integrate together a website currently hosted WordPress.com and a custom web application currently hosted on Azure?
- How-to: This block can only be used once
- output html on post or page from custom plugin [closed]
- Custom Post Type – custom form in dashboard
- Problem with add_action
- To perform the requested action, WordPress needs to access your web > server
- Custom API plugin to execute 3rd party API to retrieve data
- Is there a way to convert shortcodes to html content?
- Proper way to handle admin-ajax calls
- How to display the featured post on the category page?
- Disable globally “Crop thumbnail to exact dimensions (normally thumbnails are proportional)” with Multisite
- How to find the list of custom post type where logged in user is author
- UTF-32be error WordPress
- Loop in elementor custom widget not working
- Change text string in a plugin
- Set Multiple Meta Values as an Array Using dispatch( ‘core/editor’ ).editPost() Call in Gutenberg/JS
- wp-admin send 404 error
- How to create plugin/ page that reads from database
- Stop wordpress from requesting external jquery from googleapi
- Can the benefits of performance optimization plugins outweigh the tax of installing them on performance?
- get_users(); Is an Undefined Function When Used in Cron Job
- Alternate email sending service – eg: AWS SES [closed]
- 5 PHP Fatal error: Uncaught ArgumentCountError (Cannot Find)
- Disabling a plugin lead to styles being shown as plain text
- the_content() printing DOCTYPE, and tags in the middle of page
- How to deal with Slow HTTP POST (slowloris) vulnerability
- How to create author profile showcase in wordpress