diff --git a/README.md b/README.md
index 3d77ce69..1287a4e4 100644
--- a/README.md
+++ b/README.md
@@ -42,7 +42,7 @@ GNU Version 2 or Any Later Version
## Releases
-[Official Release Version: 2.6.2](https://github.com/ultimatemember/ultimatemember/releases/tag/2.6.2).
+[Official Release Version: 2.6.3](https://github.com/ultimatemember/ultimatemember/releases/tag/2.6.3).
## Changelog
diff --git a/includes/admin/core/class-admin-navmenu.php b/includes/admin/core/class-admin-navmenu.php
index bb0dcd4f..d2eba992 100644
--- a/includes/admin/core/class-admin-navmenu.php
+++ b/includes/admin/core/class-admin-navmenu.php
@@ -47,16 +47,13 @@ if ( ! class_exists( 'um\admin\core\Admin_Navmenu' ) ) {
* Fires just before the move buttons of a nav menu item in the menu editor.
* Adds block "Ultimate Member Menu Settings"
*
- * @since WP 5.4.0
- * @hook wp_nav_menu_item_custom_fields
- *
- * @param int $item_id Menu item ID.
+ * @param int $item_id Menu item ID.
* @param \WP_Post $item Menu item data object.
- * @param int $depth Depth of menu item. Used for padding.
+ * @param int $depth Depth of menu item. Used for padding.
* @param \stdClass $args An object of menu item arguments.
- * @param int $id Nav menu ID.
+ * @param int $id Nav menu ID.
*/
- function wp_nav_menu_item_custom_fields( $item_id, $item, $depth, $args, $id = null ) {
+ public function wp_nav_menu_item_custom_fields( $item_id, $item, $depth, $args, $id = null ) {
$um_nav_public = get_post_meta( $item->ID, 'menu-item-um_nav_public', true );
$_nav_roles_meta = get_post_meta( $item->ID, 'menu-item-um_nav_roles', true );
diff --git a/includes/class-functions.php b/includes/class-functions.php
index 72f179fa..2399bf0b 100644
--- a/includes/class-functions.php
+++ b/includes/class-functions.php
@@ -729,6 +729,18 @@ if ( ! class_exists( 'UM_Functions' ) ) {
* @param {string} $context Function context 'wp-admin' for Admin Dashboard echo, 'templates' for the frontend.
*
* @return {array} Allowed HTML tags with attributes.
+ *
+ * @example
It adds iframe HTML tag and 'onclick' attribute for strong tag.
+ * function add_extra_kses_allowed_tags( $allowed_html, $context ) {
+ * if ( 'templates' === $context ) {
+ * $allowed_html['iframe'] = array(
+ * 'src' => true,
+ * );
+ * $allowed_html['strong']['onclick'] = true;
+ * }
+ * return $allowed_html;
+ * }
+ * add_filter( 'um_late_escaping_allowed_tags', 'add_extra_kses_allowed_tags', 10, 2 );
*/
$allowed_html = apply_filters( 'um_late_escaping_allowed_tags', $allowed_html, $context );
diff --git a/includes/core/class-external-integrations.php b/includes/core/class-external-integrations.php
index dc9b716f..aa100f34 100644
--- a/includes/core/class-external-integrations.php
+++ b/includes/core/class-external-integrations.php
@@ -51,7 +51,6 @@ if ( ! class_exists( 'um\core\External_Integrations' ) ) {
* UM filter - Restore original arguments on translated page
*
* @description Restore original arguments on load shortcode if they are missed in the WPML translation
- * @hook um_pre_args_setup
*
* @global \SitePress $sitepress
* @param array $args
@@ -82,7 +81,6 @@ if ( ! class_exists( 'um\core\External_Integrations' ) ) {
* Integration for the "Transposh Translation Filter" plugin
*
* @description Fix issue "404 Not Found" on profile page
- * @hook template_redirect
* @see http://transposh.org/
*
* @global transposh_plugin $my_transposh_plugin
@@ -179,7 +177,6 @@ if ( ! class_exists( 'um\core\External_Integrations' ) ) {
/**
* Change user profile URL for WPML compatibility.
*
- * @hook um_external_profile_url
* @see \um\core\Permalinks::profile_permalink()
*
* @param bool|string $profile_url Profile URL.
@@ -217,7 +214,6 @@ if ( ! class_exists( 'um\core\External_Integrations' ) ) {
*
* Note: It's used for User Profile nav links fix
*
- * @hook um_get_current_page_url
* @see \um\core\Permalinks::get_current_url()
*
* @param string $page_url Current URL.
@@ -244,7 +240,6 @@ if ( ! class_exists( 'um\core\External_Integrations' ) ) {
/**
* Filters the displayed languages of the WPML language switcher.
*
- * @hook icl_ls_languages
* @see https://wpml.org/wpml-hook/icl_ls_languages/
*
* @param array $array Collection of active languages to display in the language switcher.
diff --git a/includes/core/um-actions-profile.php b/includes/core/um-actions-profile.php
index 870354b4..f5cd85a0 100644
--- a/includes/core/um-actions-profile.php
+++ b/includes/core/um-actions-profile.php
@@ -1726,14 +1726,15 @@ function um_profile_menu( $args ) {
$nav_link = apply_filters( "um_profile_menu_link_{$id}", $nav_link );
/**
- * Filters changing a link's tag attributes.
+ * Filters a profile menu navigation links' tag attributes.
*
* @since 2.6.3
* @hook um_profile_menu_link_{$id}_attrs
*
- * @param {string} $profile_nav_attrs link's tag attributes.
+ * @param {string} $profile_nav_attrs Link's tag attributes.
+ * @param {array} $args Profile form arguments.
*
- * @return {string} link's tag attributes.
+ * @return {string} Link's tag attributes.
*
* @example Add a link's tag attributes.
* function um_profile_menu_link_attrs( $profile_nav_attrs ) {
@@ -1742,7 +1743,7 @@ function um_profile_menu( $args ) {
* }
* add_filter( 'um_profile_menu_link_{$id}_attrs', 'um_profile_menu_link_attrs', 10, 1 );
*/
- $profile_nav_attrs = apply_filters( "um_profile_menu_link_{$id}_attrs", '' );
+ $profile_nav_attrs = apply_filters( "um_profile_menu_link_{$id}_attrs", '', $args );
$profile_nav_class = '';
if ( ! UM()->options()->get( 'profile_menu_icons' ) ) {
diff --git a/readme.txt b/readme.txt
index 8d03623a..5c7c2232 100644
--- a/readme.txt
+++ b/readme.txt
@@ -7,7 +7,7 @@ Tags: community, member, membership, user-profile, user-registration
Requires PHP: 5.6
Requires at least: 5.5
Tested up to: 6.2
-Stable tag: 2.6.2
+Stable tag: 2.6.3
License: GNU Version 2 or Any Later Version
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
@@ -163,6 +163,35 @@ No, you do not need to use our plugin’s login or registration pages and can us
* To learn more about version 2.1 please see this [docs](https://docs.ultimatemember.com/article/1512-upgrade-2-1-0)
* UM2.1+ is a significant update to the Member Directories' code base from 2.0.x. Please make sure you take a full-site backup with restore point before updating the plugin
+= 2.6.3: June 14, 2023 =
+
+* Enhancements:
+
+ - Added: `um_profile_menu_link_{$id}_attrs` hook for changing link attributes
+ - Added: `get_member_directory_id()` function for getting member directory ID based on page ID
+ - Added: The "Order" and "Data type" settings for custom sorting fields based on metakey in Member Directory
+ - Added: New hooks `um_profile_permalink`,`um_external_profile_url`
+ - Added: Users dropdown field to Admin Forms class
+ - Added: New developer docs [here](http://ultimatemember.github.io/ultimatemember/). It will be upgraded from version to version
+
+* Bugfixes:
+
+ - Fixed: PHP8.2 PHP errors (deprecated, warnings, etc.)
+ - Fixed: Filters visibility on member directory page based on public or private visibility for filter's field
+ - Fixed: Incorrect Member Directory numerical sorting order
+ - Fixed: wp_editor() doesn't work correctly in content restriction settings for Mac users
+ - Fixed: Profile links when WPML plugin is active
+ - Fixed: ACF and UM blocks conflict
+ - Fixed: `UM()->mail()->locate_template()` function's visibility
+
+* Deprecated:
+
+ - Deprecated: `um_localize_permalink_filter`. Use `post_link` instead
+
+* Templates required update:
+
+ - members.php
+
= 2.6.2: May 31, 2023 =
* Bugfixes: