2016-04-19 11 views
1

私はツールセットタイプを使用していて、URLの設定方法が簡単ではないかと思っています。カスタム投稿タイプとタクソノミーによるURLフォーマットの改善

私はカスタムポストタイプの会場を持っています。私は、カスタムカテゴリーの分類分類を持っています。

現在のURLが

http://domain.com/venue/location/manchester/ 
http://domain.com/venue/manchester/the-venue-name/ 

のように出てきている。しかし、私は、URLのは

私はこれらの変更を行うために見る必要があるん
http://domain.com/manchester/ 
http://domain.com/manchester/the-venue-name/ 

のような構造がしたいですか?

これはすべて.htaccessの仕事ですか、またはパーマリンクセクション内で何かできますか?私は右理解していれば、事前

+0

私は現時点であなたに正確な回答はありませんが、これが可能だと思います。コーデックスページがまだない場合は、こちらをご覧ください:https://codex.wordpress.org/Using_Permalinks – edhurtig

+0

これは読み込まれた質問です。はい、可能です。あなたはrewrite-apiを使用しています。それは...これまでずっと楽しかったです! http://code.tutsplus.com/tutorials/the-rewrite-api-the-basics--wp-25474 http://code.tutsplus.com/articles/the-rewrite-api-post-types- taxonomies - wp-25488 – admcfajn

+0

また、regist_post_type引数でこの行に注目してください:array( 'slug' => 'prodotto /%brand%'、 'with_front' => false)https:// wordpress。 org/support/topic/custom-post-type-postの間のtaxonomyの挿入カテゴリ – admcfajn

答えて

0

おかげで、このハックは、あなたのテンプレートで作業しなければなりません。 まず、投稿タイプの名前をurlSlugから削除する必要があります。

function ft_remove_postType_slug_fromUrl($post_link, $post, $leavename) { 
    if ('venue' != $post->post_type || 'publish' != $post->post_status) { 
     return $post_link; 
    } 
    $post_link = str_replace('/' . $post->post_type . '/', '/', $post_link); 
    return $post_link; 
} 
add_filter('post_type_link', 'ft_remove_postType_slug_fromUrl', 10, 3); 

しかし、これは単独では機能しません。あなたのfunctions.phpでこのコードをペイトすれば、404エラーが出るはずです。WordPressはの投稿とページがこのように振る舞うと予想しています

したがって、この操作も追加する必要があります。この後

function ft_change_parsingRequest($query) { 

    if (! $query->is_main_query() || 2 != count($query->query) || ! isset($query->query['page'])) { 
     return; 
    } 
    if (! empty($query->query['name'])) { 
     $query->set('post_type', array('post', 'venue', 'page')); 
    } 
} 
add_action('pre_get_posts', 'ft_change_parsingRequest'); 

、あなたはあなたがあなたの管理パネル領域に再更新パーマリンクの設定、それは意味し、(それは私が推測するflush_rewritesを呼び出します。)タイプ/パーマリンクツリーを投稿リフレッシュ/更新します。

また、魔法を見たりしたい場合は、ソースURLから確認できます。

https://core.trac.wordpress.org/browser/tags/4.3/src/wp-includes/post.php#L1454

この行は述べています。

add_permastruct($post_type, "{$args->rewrite['slug']}/%$post_type%", $permastruct_args); 

ハッピーコーディング。

関連する問題