web-dev-qa-db-ja.com

カスタム分類の書き換え規則

私はwordpressが初めてなので、レシピブログを作成しようとしています。

私は成分のためのカスタム分類法を作成しました:

register_taxonomy( 
    'ingredient', 
    'post', 
    array( 'label' => 'Ingredient', 
           'hierarchical' => true
         ), 
    array( 'rewrite' => array (
                            'slug'=>'recipes-with'
                        )
    );

すべてがうまくいくし、私のURLは

www.mysite.com/recipes-with/onion

しかし私は私のURLがのようになりたいのですが

www.mysite.com/recipes-with-onion

私はadd_rewrite_rule()を調べようとしましたが、うまく動かないようです。

任意の助けは大歓迎です!

編集:これがtoni_lehtimakiの助けを借りて問題を解決した方法です。

1)register_taxonomyのargs引数からrewrite配列を削除したので、

register_taxonomy( 'ingredient', 'post', array('label'=>'Ingredient', 'hierarchical'=>true));

2)それから私はいくつかの書き換えルールを追加しました

add_rewrite_rule('^recipes-with-(.*)/page/([0-9]+)?$','index.php?ingredient=$matches[1]&paged=$matches[2]','top');
add_rewrite_rule('^recipes-with-(.*)/?','index.php?ingredient=$matches[1]','top');

3)私がしなければならなかった最後の事はフィルターを加えることでした

add_filter( 'term_link', 'change_ingredients_permalinks', 10, 2 );

function change_ingredients_permalinks( $permalink, $term ) {
    if ($term->taxonomy == 'ingredient') $permalink = str_replace('ingredient/', 'recipes-with-', $permalink);
    return $permalink;
}

4)書き換えルールをフラッシュします(設定 - >パーマリンクに行き、保存をクリックするだけです)。

3
checcco

私はadd_rewrite_rule()でこれを思いつきました:

add_rewrite_rule('^recipes-with-([^/]*)/?','index.php?ingredient=$matches[1]','top');

私は上記のためにいくつかのテストをしました、そしてそれはあなたが一度に一つの分類法のためにそれを使うときうまくいく。これは私のfunctions.phpからのコードです:

add_action( 'init', 'create_ingredient_tax' );
function create_ingredient_tax() {
    register_taxonomy( 
            'ingredient', 
            'post', 
             array( 'label' => 'Ingredient', 
            'hierarchical' => true
            ), 
            array( 'rewrite' => array (
                        'slug'=>'recipes-with'
                    ))
        );
}
// Remember to flush_rewrite_rules(); or visit WordPress permalink structure settings page
add_rewrite_rule('^recipes-with-([^/]*)/?','index.php?ingredient=$matches[1]','top');

それからWordPress 20 - 14 themeのtaxonomy-post_format.phpテンプレートファイルを使用してこれが機能することをテストしました。また、新しいルールを有効にするために書き換えルールをフラッシュしました。

2
toni_lehtimaki