From c9c3c61a530a831a0f7387fa76fd3ffdda8bfc34 Mon Sep 17 00:00:00 2001 From: iandunn Date: Wed, 25 Apr 2018 15:55:21 +0000 Subject: [PATCH] Privacy: Add template tags for building link to privacy policy page. This introduces the `get_the_privacy_policy_link()` and `the_privacy_policy_link()` functions, as well as the `privacy_policy_url` filter. A new `tests/url/` folder was added to better organize tests related to `get_*_url()` functions. Previously, those tests were placed in `tests/url.php` and `tests/link/`, but neither of those locations are optimal. Placing tests in `tests/url.php` violates the guideline of creating separate files/classes for each function under test, and using `tests/link/` conflates two distinct -- albeit related -- groups of functions. Over time, URL-related tests can be migrated to the new folder. Props birgire, xkon, azaozz, iandunn. See #43850. Built from https://develop.svn.wordpress.org/trunk@43002 git-svn-id: http://core.svn.wordpress.org/trunk@42831 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/link-template.php | 66 ++++++++++++++++++++++++++++++++++- wp-includes/version.php | 2 +- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/wp-includes/link-template.php b/wp-includes/link-template.php index 9db1065c77..815c539a4a 100644 --- a/wp-includes/link-template.php +++ b/wp-includes/link-template.php @@ -4282,10 +4282,74 @@ function get_parent_theme_file_path( $file = '' ) { * @return string The URL to the privacy policy page. Empty string if it doesn't exist. */ function get_privacy_policy_url() { + $url = ''; $policy_page_id = (int) get_option( 'wp_page_for_privacy_policy' ); if ( ! empty( $policy_page_id ) && get_post_status( $policy_page_id ) === 'publish' ) { - return get_permalink( $policy_page_id ); + $url = (string) get_permalink( $policy_page_id ); + } + + /** + * Filters the URL of the privacy policy page. + * + * @since 4.9.6 + * + * @param string $url The URL to the privacy policy page. Empty string + * if it doesn't exist. + * @param int $policy_page_id The ID of privacy policy page. + */ + return apply_filters( 'privacy_policy_url', $url, $policy_page_id ); +} + +/** + * Displays the privacy policy link with formatting, when applicable. + * + * @since 4.9.6 + * + * @param string $before Optional. Display before privacy policy link. Default empty. + * @param string $after Optional. Display after privacy policy link. Default empty. + */ +function the_privacy_policy_link( $before = '', $after = '' ) { + echo get_the_privacy_policy_link( $before, $after ); +} + +/** + * Returns the privacy policy link with formatting, when applicable. + * + * @since 4.9.6 + * + * @param string $before Optional. Display before privacy policy link. Default empty. + * @param string $after Optional. Display after privacy policy link. Default empty. + * + * @return string Markup for the link and surrounding elements. Empty string if it + * doesn't exist. + */ +function get_the_privacy_policy_link( $before = '', $after = '' ) { + $link = ''; + $privacy_policy_url = get_privacy_policy_url(); + + if ( $privacy_policy_url ) { + $link = sprintf( + '%s', + esc_url( $privacy_policy_url ), + __( 'Privacy Policy' ) + ); + } + + /** + * Filters the privacy policy link. + * + * @since 4.9.6 + * + * @param string $link The privacy policy link. Empty string if it + * doesn't exist. + * @param string $privacy_policy_url The URL of the privacy policy. Empty string + * if it doesn't exist. + */ + $link = apply_filters( 'the_privacy_policy_link', $link, $privacy_policy_url ); + + if ( $link ) { + return $before . $link . $after; } return ''; diff --git a/wp-includes/version.php b/wp-includes/version.php index 55b869b911..68be7535e7 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '5.0-alpha-43001'; +$wp_version = '5.0-alpha-43002'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.