نقش ها و دسترسی های کاربر

مسیر شما :
manage wp user roles caps - نقش ها و دسترسی های کاربر

💗 این مطلب رو به اونی که دوسش داری بفرست ! 😜

زمان تقریبی مطالعه: 3 دقیقه

اگر افزونه شما به کاربران اجازه می دهد داده ها را ارسال کنند – چه در بخش مدیر و چه در قسمت عمومی – این باید قابلیت های کاربر را بررسی کند.

مهمترین مرحله در ایجاد یک لایه امنیتی کارآمد ، وجود سیستم دسترسی کاربر است. وردپرس این را به صورت نقش و قابلیت های دسترسی فراهم می کند.

به هر کاربری که وارد وردپرس می شود بسته به نقش کاربر خود به طور خودکار قابلیت های خاص کاربر اختصاص می یابد.

نقش های کاربر فقط یک روش فانتزی است که می گوید کاربر به کدام گروه تعلق دارد. هر گروه دارای مجموعه خاصی از قابلیت های از پیش تعریف شده است.

به عنوان مثال ، کاربر اصلی وب سایت شما نقش یک مدیر را دارد در حالی که سایر کاربران ممکن است نقش هایی مانند ویرایشگر یا نویسنده را داشته باشند. شما می توانید بیش از یک کاربر را به یک نقش اختصاص دهید ، یعنی ممکن است دو مدیر برای یک وب سایت وجود داشته باشد.

قابلیت های کاربر مجوزهای خاصی است که به هر کاربر یا نقش خاص خودش اختصاص می دهید.

به عنوان مثال ، سرپرست ها از قابلیت “manage_options” برخوردارند که به آنها امکان می دهد گزینه های وب سایت را مشاهده ، ویرایش و ذخیره کنند. از طرف دیگر سردبیران فاقد این قابلیت هستند که از تعامل آنها با گزینه ها جلوگیری می کند.

سپس این قابلیت ها در نقاط مختلف Admin بررسی می شود. بسته به قابلیت های اختصاص یافته به یک نقش ؛ منوها ، عملکردها و سایر جنبه های ممکن است تجربه وردپرس اضافه یا حذف شود.

هنگام ساخت یک افزونه ، مطمئن شوید که کد خود را فقط زمانی اجرا می کنید که کاربر فعلی توانایی های لازم را داشته باشد.

هرچه نقش کاربر بیشتر باشد ، کاربر قابلیت های بیشتری دارد. هر نقش کاربر نقش قبلی را در سلسله مراتب به ارث می برد. به عنوان مثال ، “مدیر” ، که بالاترین نقش کاربر در نصب یک سایت است ، نقش های زیر و قابلیت های آنها را به ارث می برد: “مشترک” ، “مشارکت کننده” ، “نویسنده” و “ویرایشگر”.

مثال زیر پیوندی را ایجاد می کند که امکان حذف سطل زباله پست ها را فراهم می کند. از آنجا که این کد قابلیت های کاربر را بررسی نمی کند ، به هر بازدید کننده سایت اجازه می دهد پست ها را حذف کند.

/**
 * Generate a Delete link based on the homepage url.
 *
 * @param string $content   Existing content.
 *
 * @return string|null
 */
function wporg_generate_delete_link( $content ) {
    // Run only for single post page.
    if ( is_single() && in_the_loop() && is_main_query() ) {
        // Add query arguments: action, post.
        $url = add_query_arg(
            [
                'action' => 'wporg_frontend_delete',
                'post'   => get_the_ID(),
            ], home_url()
        );
 
        return $content . ' <a href="' . esc_url( $url ) . '">' . esc_html__( 'Delete Post', 'wporg' ) . '</a>';
    }
 
    return null;
}
 
 
/**
 * Request handler
 */
function wporg_delete_post() {
    if ( isset( $_GET['action'] ) && 'wporg_frontend_delete' === $_GET['action'] ) {
 
        // Verify we have a post id.
        $post_id = ( isset( $_GET['post'] ) ) ? ( $_GET['post'] ) : ( null );
 
        // Verify there is a post with such a number.
        $post = get_post( (int) $post_id );
        if ( empty( $post ) ) {
            return;
        }
 
        // Delete the post.
        wp_trash_post( $post_id );
 
        // Redirect to admin page.
        $redirect = admin_url( 'edit.php' );
        wp_safe_redirect( $redirect );
 
        // We are done.
        die;
    }
}
 
 
/**
 * Add the delete link to the end of the post content.
 */
add_filter( 'the_content', 'wporg_generate_delete_link' );
 
/**
 * Register our request handler with the init hook.
 */
add_action( 'init', 'wporg_delete_post' );

مثال بالا به هر بازدید کننده از سایت اجازه می دهد تا روی پیوند “حذف مطلب” کلیک کرده و پست را حذف کند. با این حال ، ما فقط می خواهیم ویرایشگران و بالاتر بتوانند روی پیوند “حذف” کلیک کنند. برای رسیدن به این هدف ، بررسی خواهیم کرد که کاربر فعلی قابلیت edit_others_post را دارد که فقط ویرایشگران یا بالاتر از آن برخوردار هستند:

/**
 * Generate a Delete link based on the homepage url.
 *
 * @param string $content   Existing content.
 *
 * @return string|null
 */
function wporg_generate_delete_link( $content ) {
    // Run only for single post page.
    if ( is_single() && in_the_loop() && is_main_query() ) {
        // Add query arguments: action, post.
        $url = add_query_arg(
            [
                'action' => 'wporg_frontend_delete',
                'post'   => get_the_ID(),
            ], home_url()
        );
 
        return $content . ' <a href="' . esc_url( $url ) . '">' . esc_html__( 'Delete Post', 'wporg' ) . '</a>';
    }
 
    return null;
}
 
 
/**
 * Request handler
 */
function wporg_delete_post() {
    if ( isset( $_GET['action'] ) && 'wporg_frontend_delete' === $_GET['action'] ) {
 
        // Verify we have a post id.
        $post_id = ( isset( $_GET['post'] ) ) ? ( $_GET['post'] ) : ( null );
 
        // Verify there is a post with such a number.
        $post = get_post( (int) $post_id );
        if ( empty( $post ) ) {
            return;
        }
 
        // Delete the post.
        wp_trash_post( $post_id );
 
        // Redirect to admin page.
        $redirect = admin_url( 'edit.php' );
        wp_safe_redirect( $redirect );
 
        // We are done.
        die;
    }
}
 
 
if ( current_user_can( 'edit_others_posts' ) ) {
    /**
     * Add the delete link to the end of the post content.
     */
    add_filter( 'the_content', 'wporg_generate_delete_link' );
 
    /**
     * Register our request handler with the init hook.
     */
    add_action( 'init', 'wporg_delete_post' );
}

نگاهی به این مطالب هم بیاندازید، شاید مفید واقع شوند...

Shiri Korosh Final 300x300 - طراحی لوگو شیرینی سرای کورش

طراحی لوگو شیرینی سرای کورش

زمان تقریبی مطالعه: < 1 دقیقه باز طراحی لوگوی شیرینی سرای کورش طراحی : آذر 1402 کارفرما : شیرینی سرای کورش

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اینجا محل پیاده سازی و افـزایش مهـارت‌های شغلی شماست.

یک کسب و کار هوشمند در انتظار شماست

web designer know the power of good website design - نقش ها و دسترسی های کاربر
اسکرول به بالا
Scroll to Top

ورود به پنل کاربری فناوری اطلاعات رسام ویرا

ابتدا باید وارد حساب کاربری خود شوید
یا در صورتی که حساب ندارید ثبت نام کنید !