Ultimate Member 自訂註冊表單 後台顯示資訊

Ultimate Member 註冊表單、新增的欄位在後台顯示資訊

前提需求 : 

新增一管理員角色,讓客戶自行至後台修改文章、管理使用者。此管理員的後台介面僅開放客戶需求的頁面與設定修改與查詢!

並且在使用者資訊欄位,必須能夠查看前台註冊表單的新增欄位資訊。(如下圖)

環境設定 : 

前台的註冊表單,使用Ultimate Member 的註冊表單,並且新增一些欄位資訊與ID。

後台使用WP原生的使用者。

問題在於 : 

關於後台UM註冊資訊,客製化的管理員腳色,是無法查詢使用者資訊中的註冊訊息。此註冊訊息僅限於有 manage_option 權限才可以看到。然而,若是開啟manage_options後,所有後台的設定與外掛,客戶都可以看到。

解決方式 :  不見得是唯一的解決方式,但是目前找到的方式:

在外觀中的 functions.php加上以下的代碼: 

/**
* Add capability ‘manage_options’ dynamically when user retrieves information for the popup “Review Registration Details”
* @author Ultimate Member support <support@ultimatemember.com>
* @since 2021-11-21
* @see #56270
*/
add_filter( ‘user_has_cap’, function( $allcaps, $caps, $args, $WP_User ) {
if ( defined( ‘DOING_AJAX’ ) && DOING_AJAX && in_array( ‘manage_options’, $caps ) ) {

$nonce = isset( $_REQUEST[‘nonce’] ) ? sanitize_text_field( $_REQUEST[‘nonce’] ) : ”;
$action = isset( $_REQUEST[‘action’] ) ? sanitize_key( $_REQUEST[‘action’] ) : ”;
$act_id = isset( $_REQUEST[‘act_id’] ) ? sanitize_key( $_REQUEST[‘act_id’] ) : ”;
$profile_id = isset( $_REQUEST[‘arg1’] ) ? absint( $_REQUEST[‘arg1’] ) : 0;

if ( wp_verify_nonce( $nonce, ‘um-admin-nonce’ ) && ‘um_dynamic_modal_content’ === $action && ‘um_admin_review_registration’ === $act_id && um_can_view_profile( $profile_id ) ) {
$allcaps[‘manage_options’] = 1;
}
}
return $allcaps;
}, 20, 4 );

解決狀況 :  登入後台的使用者,無須開啟manage_options權限,就可以查看使用者的註冊資料! 

發佈留言