各カテゴリ/タグのアーカイブがあります。今度は、次のURL構造を使用してカスタムアーカイブを作成します。
http://example.com/cat1/subcat1/tag/tag1
これは、タグtag1
を持ち、cat1
とsubcat1
に属するすべての投稿を表示します。
このアーカイブを作成する方法
あなたが探しているものは書き換え規則によって作成することができるカスタム検索です。 URLにクエリを追加するルールを作成します。
まず、WordPressがカスタムURLを認識するように書き換えタグを定義しましょう。
function my_rewrite_tag() {
add_rewrite_tag('%custom-categories%', '([^&]+)');
}
add_action('init', 'my_rewrite_tag', 10, 0);
ここで、データを別のパスにリダイレクトするための規則を作成します。
function my_rewrite_rule() {
add_rewrite_rule(
'^custom-categories/([^/]*)/([^/]*)/([^/]*)/([^/]*)/?',
'index.php?post_type=post&customCat=$matches[1]&customSubCat=$matches[2]&customTag1=$matches[3]&customTag2=$matches[4]',
'top'
);
}
add_action('init', 'my_rewrite_rule', 10, 0);
それでは、アクセスしようとすると:
http://example.com/custom-categories/cat1/subcat1/tag/tag1
私たちは実際にリダイレクトされます。
http://example.com/index.php?post_type=post&customCat=cat1&customSubCat=subcat1&customTag1=tag&customTag2=tag1
これは通常の投稿タイプのアーカイブです。今がトリックです。これらのデータが設定されている場合は、クエリを変更します。
// We only want to do this if every data is set, so let's check for them all
if(isset($_['customCat']) && isset($_['customSubCat']) && isset($_['customTag1']) && isset($_['customTag2'])) {
// Now alter the main query
function photogram_include_blog_posts($query) {
if ( !is_admin() && $query->is_main_query() && $query->is_archive() ) {
// Set the tags
$query->set('tag__in', array($_['customTag1'],$_['customTag2']));
// Set the categories
$query->set('category__in', array($_['customSubCat'],$_['customCat']));
}
}
add_action( 'pre_get_posts', 'photogram_include_blog_posts' );
}
そのため、カスタムクエリを実行するアーカイブページにリダイレクトされます。完了しました。