URL do perfil do autor

Eu tenho 2 funções de usuário. “fotógrafo” e “assinante”

Eu estabeleci meu autor.php assim

get_queried_object(); ?> 

Isso funciona perfeitamente para mostrar diferentes perfis com base nas funções dos usuários. No entanto id gostaria de alterar a url com base nos papéis.

Algo como

http://xxx.xxx/subscriber/username/

http://xxx.xxx/photographer/username/

Alguma idéia de fazer isso?

Solutions Collecting From Web of "URL do perfil do autor"

Para alterar todos os URLs do autor, um normalmente alteraria a base do autor , no entanto, uma vez que você quer várias bases de autores, teremos que fazer as coisas um pouco diferente.

Há duas partes para isso: a primeira parte está recebendo o WordPress para reconhecer solicitações recebidas para suas páginas autorizadas personalizadas e encaminhá-las corretamente. Para fazer isso, adicionaremos duas novas regras de reescrita que levam qualquer coisa após um pedido de subscriber/ ou photographer/ e passamos isso como um author_name de author_name para a consulta principal. O WordPress irá processar esses pedidos como is_author , assim como páginas de autor normais.

 function wpa_author_rewrite_rules(){ add_rewrite_rule( 'subscriber/([^/]+)/?$', 'index.php?author_name=$matches[1]', 'top' ); add_rewrite_rule( 'photographer/([^/]+)/?$', 'index.php?author_name=$matches[1]', 'top' ); } add_action( 'init', 'wpa_author_rewrite_rules' ); 

Observe que as regras de reescrita precisarão ser liberadas uma vez após adicionar este código para que elas tenham efeito.

A segunda parte disso é para o WordPress gerar os URLs corretos quando você usa a API para enviar URLs de autor. Modificar a saída do WordPress normalmente é feito através de um filtro, como também acontece aqui. Modificamos a saída de funções que geram URLs de autor através do filtro author_link . Você reconhecerá a function user_can em uso aqui para verificar se o $author_id tem as funções do subscriber ou do photographer , retornando URLs personalizados para esses casos.

 function wpa_author_link( $link, $author_id, $author_nicename ){ if( user_can( $author_id, 'subscriber' ) ){ return home_url( 'subscriber/' . $author_nicename . '/' ); } elseif( user_can( $author_id, 'photographer' ) ) { return home_url( 'photographer/' . $author_nicename . '/' ); } return $link; } add_filter( 'author_link', 'wpa_author_link', 10, 3 );