web-dev-qa-db-ja.com

/ category /を著者のアーカイブページに追加する

私は、/ category /を著者アーカイブページに追加して、すべての著者の特定のカテゴリからの投稿だけをフィルタリングします。これは次のようなものです。mysite.com/author/me/movies

関数を使ってそれをする方法はありますか?私はこのmysite.com/author/me/?category=moviesのようなものを使う方法を知っています、しかし私は正しいパーマリンクを使いたいです。

1
Eder Augusto

これを達成するには 'add_rewrite_rule`を使って新しい書き換えルールを追加します。

カテゴリがデフォルトのWordPressカテゴリの場合、query_varを登録する必要はありませんが、カテゴリがカスタムカテゴリの場合は、query_varフィルタを使用してquery_varsを登録する必要があります。

カテゴリがデフォルトの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);

カテゴリがカスタムクエリ変数(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' );

テンプレートでカスタムクエリ変数を使用するには、get_query_var関数を使用します。

$author_category = get_query_var( 'author_category' );

参照:

0
Tunji