web-dev-qa-db-fra.com

Ajouter/catégorie/à une page d'archive d'auteur

Je souhaite ajouter/category/à une page d'archive d'auteur pour ne filtrer que les publications d'une catégorie spécifique de tous les auteurs, à peu près comme ceci: mysite.com/author/me/movies

Y a-t-il un moyen de le faire en utilisant une fonction? Je sais comment utiliser quelque chose comme ceci mysite.com/author/me/?category=movies, mais je veux utiliser des permaliens corrects.

1
Eder Augusto

Vous pouvez y parvenir en ajoutant une nouvelle règle de réécriture à l'aide de 'add_rewrite_rule`.

Si la catégorie est la catégorie WordPress par défaut, vous n'avez pas besoin d'enregistrer un query_var, mais si votre catégorie est une catégorie personnalisée, vous devez alors enregistrer un query_var à l'aide du filtre query_vars.

Si catégorie est la catégorie par défaut de WordPress:

function wpse256215_custom_rewrite_rule() {
    add_rewrite_rule('^author/([^/]*)/([^/]*)/?','index.php?author_name=$matches[1]&category_name=$matches[2]','top');
}
add_action('init', 'wpse256215_custom_rewrite_rule', 10, 0);

Si la catégorie est une variable de requête personnalisée (author_category):

function wpse256215_custom_rewrite_rule() {
    add_rewrite_rule('^author/([^/]*)/([^/]*)/?','index.php?author_name=$matches[1]&author_category=$matches[2]','top');
}
add_action('init', 'wpse256215_custom_rewrite_rule', 10, 0);

function wpse256215_query_vars( $query_vars ) {
    $query_vars[] = 'author_category';
    return $query_vars;
}
add_filter( 'query_vars', 'wpse256215_query_vars' );

Pour utiliser la variable de requête personnalisée dans votre modèle, vous pouvez ensuite utiliser la fonction get_query_var:

$author_category = get_query_var( 'author_category' );

REFERENCE:

0
Tunji