add_node( [ 'id' => self::PREFIX, 'title' => __( 'Admin Bar Tools', 'admin-bar-tools' ), 'meta' => [ 'target' => self::PREFIX, ], ] ); $abt_options = $this->get_abt_options(); $link_url = ''; foreach ( $abt_options['items'] as $item ) { if ( $item['status'] ) { if ( is_admin() ) { $link_url = $item['adminurl']; } elseif ( ! is_admin() ) { if ( 'hatena' === $item['shortname'] ) { $link_url = $item['url'] . $sanitize_domain . $sanitize_uri; } elseif ( 'gsc' === $item['shortname'] ) { $link_url = $this->searchconsole_url( $item['url'], $abt_options['sc'], $url ); } else { $link_url = in_array( $item['shortname'], $add_url_lists, true ) ? $item['url'] . $url : $item['url']; } } $wp_admin_bar->add_node( [ 'id' => $item['shortname'], 'title' => $item['name'], 'parent' => self::PREFIX, 'href' => $link_url, 'meta' => [ 'target' => '_blank', ], ], ); } } } } /** * Create Google SearchConsole URL. * * @param string $url SearchConsole URL. * @param int $status Use SearchConsole type (Don't use, Domain or URL Prefix). * @param string $encode_url Use rawurlencode page url. * * @return string SearchConsole URL. */ private function searchconsole_url( string $url, int $status, string $encode_url ): string { $domain = isset( $_SERVER['SERVER_NAME'] ) ? sanitize_text_field( wp_unslash( $_SERVER['SERVER_NAME'] ) ) : ''; $gsc_url = $url; $parameter = [ '?resource_id=sc-domain:', '/performance/search-analytics?resource_id=sc-domain:', ]; if ( 1 === $status ) { $gsc_url .= is_front_page() ? $parameter[0] . $domain : $parameter[1] . $domain . '&page=!' . $encode_url; } elseif ( 2 === $status ) { $gsc_url .= is_front_page() ? $parameter[0] . $encode_url : $parameter[1] . rawurlencode( $domain . '/' ) . '&page=!' . $encode_url; } return $gsc_url; } }