web-dev-qa-db-ja.com

カスタム投稿タイプのクリーンURLパーマリンク

私は写真のコレクションであるphoto_groupのカスタムコンテンツタイプを持っています。

私はmysite.com/photosに行き、そのページに私のすべての写真グループをダンプしてもらいたいです。

「ページ」を作成してテンプレートを設定せずにこれを行うにはどうすればよいですか。それとも私がしなければならないというアプローチですか?

ありがとう

1
Romes

ローム、

あなたが提案した方法は確実に機能し、おそらく最も簡単な方法です。しかし、これが理想的ではないケースを確実に見ることができます。これをより「プログラム的に」達成するには、次のことを行う必要があります。

1)新しいクエリ変数を設定します

2)そのクエリを理解するための新しい書き換え規則を生成する

3)そのクエリ変数が一致したときにテンプレートにリダイレクトします。

ここにあなたを助けるためのいくつかのコードがあります。

1:クエリvarを追加

function query_vars( $public_query_vars ) {
    $public_query_vars[] = 'romes_var';
    return $public_query_vars;
}
add_filter( 'query_vars', 'romes_query_vars' );

2:クエリvarを処理するために書き換えルールを関連付ける

function romes_generate_rewrite_rules( $wp_rewrite ) {
    $new_rules = array();
    $new_rules['(photos)/?$'] = 'index.php?romes_var=$matches[1]';
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'romes_generate_rewrite_rules' );

3:クエリvarを検出してテンプレートにリダイレクトする

function romes_template_redirect() {
    if ( 'photos' == get_query_var( 'romes_var' ) ) {
        load_template( get_stylesheet_directory_uri() . '/template-photos.php' );
        exit();
    }
}
add_action( 'template_redirect', 'romes_template_redirect' );

このコードは特にテストされていませんが、ほとんどの場合は問題ありません。このコードを使用してスクリプトを実行する前に、必ず書き換え規則をフラッシュしてください(単にパーマリンクのページにアクセスしてください)。

1
tollmanz

これを行うには、カスタム分類法が必要です。 mysite.com/photosのページを作成する必要はありません。分類ページにすることができます。たとえば、 "photos"という名前のカスタム分類法を作成したら、taxonomy.phpをtaxonomy-photos.phpにコピーできます。カスタム分類ページテンプレートファイルとして。

WordPress Codexで確認してください。カスタム分類法Codex

いくつかのプラグインを使用すると、これらのカスタム分類法を非常に簡単な方法で作成できます。好きなものを見つけてください。 http://wordpress.org/extend/plugins/search.php?q=Custom+Taxonomies

がんばろう!

1
Tim Yao