soma

تغییر لینک پیشفرض نویسنده در وردپرس

3 پست در این موضوع قرار دارد

سلام  

لینک نویسنده در وردپرس با نام کاربریش هست مثل :  mysite.com//author/username/

چطور میشه این لینک رو تغییر داد و مثلا با nik_name نویسنده نمایش داده بشه ؟ 

به این دلیل میپرسم که اگه سایتی تعداد نویسنده های زیادی داشته باشه  ،  خب نام کاربریشون وقتی تو لینک باشه خیلی امن نیست 

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

0

به اشتراک گذاری این پست


لینک به پست
در 13 دقیقه قبل، soma گفته است :

سلام  

لینک نویسنده در وردپرس با نام کاربریش هست مثل :  mysite.com//author/username/

چطور میشه این لینک رو تغییر داد و مثلا با nik_name نویسنده نمایش داده بشه ؟ 

به این دلیل میپرسم که اگه سایتی تعداد نویسنده های زیادی داشته باشه  ،  خب نام کاربریشون وقتی تو لینک باشه خیلی امن نیست 

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

سلام

این کد هارو بزار تو فایل functions.php قالب فعال سایت ( بک آپ فراموش نشه )

add_filter( 'request', 'wp_author_page_request' );
function wp_author_page_request( $query_vars )
{
    if ( array_key_exists( 'author_name', $query_vars ) ) {
        global $wpdb;
        $author_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='nickname' AND meta_value = %s",             $query_vars['author_name'] ) );
        if ( $author_id ) {
            $query_vars['author'] = $author_id;
            unset( $query_vars['author_name'] );    
        }
    }
    return $query_vars;
}

add_filter( 'author_link', 'wp_author_link_filter', 10, 3 );
function wp_author_link_filter( $link, $author_id, $author_nicename )
{
    $author_nickname = get_user_meta( $author_id, 'nickname', true );
    if ( $author_nickname ) {
        $link = str_replace( $author_nicename, $author_nickname, $link );
    }
    return $link;
}

add_action( 'user_profile_update_errors', 'wp_set_username_to_nickname', 10, 3 );
function wp_set_username_to_nickname( &$errors, $update, &$user )
{
    if ( ! empty( $user->nickname ) ) {
        $user->user_nicename = sanitize_title( $user->nickname, $user->display_name );
    }
}

نتیجه تست رو اطلاع بدین

1

به اشتراک گذاری این پست


لینک به پست

ممنونم که خیلی سریع پاسخ دادید 

روی لوکال تست کردم ، کلا آدرس رو  به localhost/mysite/author تبدیل میکنه و صفحه 404 بالا میاد ( درواقع کلا user_login رو حذف میکنه و موقع str_replace    نام نمایشی رو جایگزین نمیکنه )

 

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری