It’s okay to use it more than once, but not encouraged. However, in your first example, you’re saving the URL to the database. When you do that, or when using the URL in the wp_remote_* context, or a redirect, or any other non-display context, you should be using esc_url_raw() instead.
Also note that get_post_meta will return an array, unless the third argument $single is set to true. If you’re dealing with a single key-value pair you’ll want:
echo esc_url( get_post_meta( $post_id, 'url', true ) );
Hope that helps!
Related Posts:
- What characters do I need to escape in XML documents?
- What characters must be escaped in HTML 5?
- How can I selectively escape percent (%) in Python strings?
- How do I escape a single quote in jQuery?
- Escape Character in SQL Server
- How to escape apostrophe (‘) in MySql?
- Should HTML output be passed through esc_html() AND wp_kses()?
- How to prevent escaping when saving HTML code in an option value?
- How to correctly escape query variables to be used in WP_Query
- esc_attr / esc_html / esc_url in echos
- When do I need to use esc_html()? [duplicate]
- what’s different between esc_attr, htmlspecialchars and htmlentities
- Allow all attributes in $allowedposttags tags
- When outputting a static string to the page, is it necessary to escape the output?
- How Flexible are the WordPress Coding Standards for PHPCS?
- why is esc_html() returning nothing given a string containing a high-bit character?
- How to properly escape a translated string?
- Translate a Constant while appeasing WordPress PHPCS
- Do I need to escape get_theme_mod(‘url’) / (‘mail’) with esc_url?
- How to allow   with wp_kses()?
- Using esc_attr_e
- Why esc_html_() is not used on every text that has a translation (on Twenty Twenty One)?
- Escaping crashes my output
- How to safely escape the title attribute
- How to safely escape data that contains HTML attributes
- Can wp_strip_all_tags be used as a substitute for esc_url, esc_attr & esc_html?
- Echoing a URL to a link
- wp_kses_post escaping doesn’t appear to work as described?
- file_get_contents | escaping doesnt show the page
- Help about Escaping
- How to keep specific tag from an html string?
- Escaping Issues
- Escaping and Special Characters (e.g. &)
- Escaping get_option( ‘time_format’ ) is nesserary?
- How should esc_url be combined with trailingslashit?
- Correct way of using esc_attr() and esc_html()
- Uses for the ‘"’ entity in HTML
- How can I add ” character to a multi line string declaration in C#?
- Escape quotes in JavaScript
- Escape string Python for MySQL
- How is \\n and \\\n interpreted by the expanded regular expression?
- Why shouldn’t `'` be used to escape single quotes?
- What’s the Use of ‘\r’ escape sequence?
- Unrecognized escape sequence for path string containing backslashes
- What’s the difference between esc_html, esc_attr, esc_html_e, and so on?
- What is the difference between esc_html filter vs attribute_escape filter?
- How to print translation supported text with HTML URL
- Which WP functions do you need to use esc_html() or esc_url() on?
- What’s the difference between esc_* functions?
- How do translated, escaped strings (esc_attr) in Themes work?
- PHP Coding Standards, Widgets and Sanitization
- how to escape wp_oembed_get for phpcs
- When do I need to use esc_attr when using WordPress internal functions
- How to escape html code with html allowed
- Disable escaping html
- esc before saving or before displaying does it matter?
- Updating a post without escaping ampersands?
- Escape hexadecimals/rgba values
- Must I serialize/sanitize/escape array data before using set_transient?
- I am not understandinhg $wpdb->prepare correctly
- esc_attr not working in shortcode
- meta_query works locally but not on live server
- How do I escape a table name or column name in SQL? esc_sql doesn’t do this
- Sanitizing, Validating and Escaping in WordPress (Plugin)
- Escaping / encoding data before insert into a database?
- Escape when echoed
- Should you escape hardcoded URLs?
- How to sanitize user input?
- Should I always prefer esc_attr_e & esc_html_e instead of _e?
- Is Wrapping intval() Around esc_attr() Redundant for Escaping Input?
- Does balanceTags() provide any escaping / protection?
- WP_Editor – Saving Value into Plugin Option – Stripping HTML
- Is it necessary to escape LIKE term in WP_User_Query?
- How to get my post title to work with an apostrophe (‘s)?
- How to escape attachment image caption text?
- esc_js() breaks unicode sequences by removing the slash ‘\’ character
- Unexpected esc_html and esc_attr behaviour
- HTML escaping data with ajax requests
- Allow HTML in Settings API input field
- Do we need to escape data that we receive from theme options?
- should I escape a literal url added in functions.php
- How to allow single quote with esc_html__() without sprintf()
- Wrapping add_query_arg with esc_url not working
- wordpress post not showing my “” text>?
- escape html in jQuery for WordPress
- echo cutom css code to WordPress page template file ? is this safe?
- Remove pre and code tags from WordPress
- Correct form of escaping and localization – functions.php breadcrumbs
- Escaping a Single Quote in str_replace for Nav Function
- wp_kses allow checkbox class and checked
- How to make MySQL search queries with quotes
- Escaping WP_Query tax_query when term has special character(s)
- Escaping and sanitization
- Escape html structure in php
- site_url() returns with additional backslashes
- How to display post meta data in secure manner
- Allow iframe in custom meta box
- Escaping admin_url output being passed to js (esc_js vs esc_url)
- Escaping inline JS correctly
- How do I return XML to an API post request