การเปลี่ยน url ของ author จาก username เป็น nickname


ในเว็บไซต์ประเภท blog ที่นำเสนอบทความ เมื่อเราเขียน post เอาอาจต้องการให้มีชื่อผู้เขียนปรากฏบริเวณไตเติ้ลหรือท้ายบทความ ซึ่งตำแหน่งก็แล้วแต่ธีมที่ใช้ และหากคลิกทีชื่อผู้เขียนก็จะเป็นลิงค์ไปยัง https://yoursite.com/author/username ซึ่ง username ควรเป็นสิ่งที่เราควรปกปิด

WordPress มีช่องสำหรับใส่ nickname สำหรับเป็นทางเลือกนอกเหนือไปจาก First name / Last name ซึ่งเป็นชื่อ label สำหรับ author แต่ไม่ว่าเราจะเปลี่ยน label ไปเป็นอะไร ลิงค์ภายในก็ยังคงเป็น https://yoursite.com/author/username อยู่ดี วิธีที่ง่ายที่สุดคือใช้ปลั๊กอิน Edit Author Slug เปลี่ยน username (หรือที่เรียกว่า slug) เป็นคำอื่น ซึ่งเราสามารถตั้งชื่อเองได้โดยอิสระ แต่ถ้าคุณไม่ต้องการใช้ปลั๊กอินก็สามารถใช้ code ต่อไปนี้ได้

add_filter( 'request', 'wpse5742_request' );
function wpse5742_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', 'wpse5742_author_link', 10, 3 );
function wpse5742_author_link( $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', 'wpse5742_set_user_nicename_to_nickname', 10, 3 );
function wpse5742_set_user_nicename_to_nickname( &$errors, $update, &$user )
{
    if ( ! empty( $user->nickname ) ) {
        $user->user_nicename = sanitize_title( $user->nickname, $user->display_name );
    }
}

เครดิต : https://www.thewebtaylor.com/articles/wordpress-change-the-author-slug-from-username-to-nickname

Close Menu