WordPress.org

Make WordPress Core

Ticket #43435: 43435.2.diff

File 43435.2.diff, 4.7 KB (added by allendav, 14 months ago)

Updated patch that includes UX for setting privacy policy page

  • src/wp-admin/menu.php

     
    256256        $submenu['tools.php'][5]  = array( __( 'Available Tools' ), 'edit_posts', 'tools.php' );
    257257        $submenu['tools.php'][10] = array( __( 'Import' ), 'import', 'import.php' );
    258258        $submenu['tools.php'][15] = array( __( 'Export' ), 'export', 'export.php' );
     259        $submenu['tools.php'][20] = array( __( 'Privacy' ), 'manage_options', 'tools-privacy.php' );
    259260if ( is_multisite() && ! is_main_site() ) {
    260261        $submenu['tools.php'][25] = array( __( 'Delete Site' ), 'delete_site', 'ms-delete-site.php' );
    261262}
  • src/wp-admin/tools-privacy.php

     
     1<?php
     2/**
     3 * Privacy Policy Screen.
     4 *
     5 * @package WordPress
     6 * @subpackage Administration
     7 */
     8
     9/** WordPress Administration Bootstrap */
     10require_once( dirname( __FILE__ ) . '/admin.php' );
     11
     12if ( ! current_user_can( 'manage_options' ) ) {
     13        wp_die( __( 'Sorry, you are not allowed to manage privacy on this site.' ) );
     14}
     15
     16$action = isset( $_GET['action'] ) ? $_GET['action'] : '';
     17
     18if ( ! empty( $action ) ) {
     19        check_admin_referer( $action );
     20
     21        if ( 'set-privacy-page' === $action ) {
     22                $page_for_privacy_policy = isset( $_POST['page_for_privacy_policy'] ) ? $_POST['page_for_privacy_policy'] : 0;
     23                update_option( 'page_for_privacy_policy', $page_for_privacy_policy );
     24                add_settings_error(
     25                        'page_for_privacy_policy',
     26                        'page_for_privacy_policy',
     27                        __( 'Privacy policy page updated successfully' ),
     28                        'updated'
     29                );
     30        }
     31}
     32
     33// Make sure the privacy policy page exists. If not, display a warning
     34$privacy_policy_page_id = get_option( 'page_for_privacy_policy' );
     35if ( ! empty( $privacy_policy_page_id ) ) {
     36                $privacy_policy_page = get_post( $privacy_policy_page_id );
     37                if ( ! $privacy_policy_page instanceof WP_Post ) {
     38                        add_settings_error(
     39                                'page_for_privacy_policy',
     40                                'page_for_privacy_policy',
     41                                __( 'The currently selected privacy policy page does not exist' ),
     42                                'warning'
     43                        );
     44                } else {
     45                        if ( 'trash' === $privacy_policy_page->post_status ) {
     46                                add_settings_error(
     47                                        'page_for_privacy_policy',
     48                                        'page_for_privacy_policy',
     49                                        __( 'The currently selected privacy policy page is in the trash. Please select a new privacy policy page.' ),
     50                                        'error'
     51                                );
     52                        }
     53                }
     54}
     55
     56$title = __( 'Privacy Tools' );
     57
     58get_current_screen()->add_help_tab( array(
     59        'id'      => 'privacy',
     60        'title'   => __( 'Privacy' ),
     61        'content' => '<p>' . __( 'This page provides tools with which you can manage your user\'s personal data and site\'s privacy policy.' ) . '</p>',
     62) );
     63
     64get_current_screen()->set_help_sidebar(
     65        '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
     66        '<p>' . __( '<a href="#">Documentation on privacy</a>' ) . '</p>'
     67);
     68
     69require_once( ABSPATH . 'wp-admin/admin-header.php' );
     70
     71?>
     72        <div class="wrap">
     73                <h1><?php echo esc_html( $title ); ?></h1>
     74
     75                <?php settings_errors(); ?>
     76
     77                <form method="post" action="tools-privacy.php?action=set-privacy-page">
     78                        <?php wp_nonce_field( 'set-privacy-page' ); ?>
     79                        <table class="form-table">
     80                                <tr>
     81                                        <th scope="row"><?php _e( 'Privacy policy page' ); ?></th>
     82                                        <td id="front-static-pages">
     83                                                <fieldset>
     84                                                        <legend class="screen-reader-text"><span><?php _e( 'Privacy policy page' ); ?></span></legend>
     85                                                        <label for="page_for_privacy_policy">
     86                                                                <?php wp_dropdown_pages(
     87                                                                        array(
     88                                                                                'name'              => 'page_for_privacy_policy',
     89                                                                                'show_option_none'  => __( '&mdash; Select &mdash;' ),
     90                                                                                'option_none_value' => '0',
     91                                                                                'selected'          => get_option( 'page_for_privacy_policy' ),
     92                                                                        )
     93                                                                );
     94                                                                ?>
     95                                                        </label>
     96                                                        <?php
     97                                                                if ( empty( $privacy_policy_page_id ) ) {
     98                                                                        $href = add_query_arg(
     99                                                                                array(
     100                                                                                        'post_type'  => 'page',
     101                                                                                        'post_title' => __( 'Privacy Policy' ),
     102                                                                                ),
     103                                                                                admin_url( 'post-new.php' )
     104                                                                        );
     105                                                                        $prompt = sprintf(
     106                                                                                __( 'If you don\'t already have a page for your privacy policy, you can <a href="%1$s">create one now</a>' ),
     107                                                                                $href
     108                                                                        );
     109                                                                        $allowed_html = array( 'a' => array( 'href' => array() ) );
     110                                                                        ?>
     111                                                                                <p class="description">
     112                                                                                        <?php echo wp_kses( $prompt, $allowed_html ); ?>
     113                                                                                </p>
     114                                                                        <?php
     115                                                                }
     116                                                        ?>
     117                                                </fieldset>
     118                                        </td>
     119                                </tr>
     120                        </table>
     121                        <?php submit_button(); ?>
     122                </form>
     123        </div>
     124<?php
     125include( ABSPATH . 'wp-admin/admin-footer.php' );