رفتن به مطلب

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


soma

پست های پیشنهاد شده

سلام  

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

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

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

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

لینک به ارسال
در 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 );
    }
}

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

لینک به ارسال

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

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

 

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...