WordPress.org

Make WordPress Core

Ticket #46829: 46829.diff

File 46829.diff, 2.9 KB (added by audrasjb, 4 months ago)

Add privacy policy page specific page to customizer menu liste and search tool

  • src/wp-includes/class-wp-customize-nav-menus.php

    diff --git a/src/wp-includes/class-wp-customize-nav-menus.php b/src/wp-includes/class-wp-customize-nav-menus.php
    index a6bae20..8ec755a 100644
    a b final class WP_Customize_Nav_Menus { 
    139139         */
    140140        public function load_available_items_query( $type = 'post_type', $object = 'page', $page = 0 ) {
    141141                $items = array();
     142                $privacy_policy_page_id = (int) get_option( 'wp_page_for_privacy_policy' );
    142143
    143144                if ( 'post_type' === $type ) {
    144145                        $post_type = get_post_type_object( $object );
    final class WP_Customize_Nav_Menus { 
    156157                                        'object'     => '',
    157158                                        'url'        => home_url(),
    158159                                );
     160
     161                                // Add "Privacy Policy" link. Treat as a page, but switch to custom on add.
     162                                $items[] = array(
     163                                        'id'         => 'privacy-policy',
     164                                        'title'      => _x( 'Privacy Policy', 'nav menu privacy policy page label' ),
     165                                        'type'       => 'custom',
     166                                        'type_label' => __( 'Privacy Policy' ),
     167                                        'object'     => '',
     168                                        'url'        => get_permalink( $privacy_policy_page_id ),
     169                                );
    159170                        } elseif ( 'post' !== $object && 0 === $page && $post_type->has_archive ) {
    160171                                // Add a post type archive link.
    161172                                $items[] = array(
    final class WP_Customize_Nav_Menus { 
    188199                                                'orderby'     => 'date',
    189200                                                'order'       => 'DESC',
    190201                                                'post_type'   => $object,
     202                                                'exclude'     => array ( $privacy_policy_page_id ),
    191203                                        )
    192204                                )
    193205                        );
    final class WP_Customize_Nav_Menus { 
    305317        public function search_available_items_query( $args = array() ) {
    306318                $items = array();
    307319
     320                $privacy_policy_page_id = (int) get_option( 'wp_page_for_privacy_policy' );
    308321                $post_type_objects = get_post_types( array( 'show_in_nav_menus' => true ), 'objects' );
    309322                $query             = array(
    310323                        'post_type'              => array_keys( $post_type_objects ),
    final class WP_Customize_Nav_Menus { 
    313326                        'update_post_meta_cache' => false,
    314327                        'post_status'            => 'publish',
    315328                        'posts_per_page'         => 20,
     329                        'post__not_in'           => array( $privacy_policy_page_id ),
    316330                );
    317331
    318332                $args['pagenum'] = isset( $args['pagenum'] ) ? absint( $args['pagenum'] ) : 1;
    final class WP_Customize_Nav_Menus { 
    402416                                        'url'        => home_url(),
    403417                                );
    404418                        }
     419
     420                        $title   = _x( 'Privacy Policy', 'nav menu privacy policy page label' );
     421                        $matches = function_exists( 'mb_stripos' ) ? false !== mb_stripos( $title, $args['s'] ) : false !== stripos( $title, $args['s'] );
     422                        if ( $matches ) {
     423                                $items[] = array(
     424                                        'id'         => 'privacy-policy',
     425                                        'title'      => _x( 'Privacy Policy', 'nav menu privacy policy page label' ),
     426                                        'type'       => 'custom',
     427                                        'type_label' => __( 'Privacy Policy' ),
     428                                        'object'     => '',
     429                                        'url'        => get_permalink( $privacy_policy_page_id ),
     430                                );
     431                        }
    405432                }
    406433
    407434                /**