2017-01-05 14 views
7

WordPress Devlopmentネットワークでこの質問をうかがいましたが、私はカスタムポストタイプのカテゴリの3つの特定カテゴリをpermalinksに表示しようとしています。次のように今パーマリンクに特定のカテゴリのみを表示WordPressのカスタム投稿タイプ

パーマリンク構造は、(それがthe theme i'm usingによって与えられた構造であり、私は子供のテーマを通じて修正てること)である。

www.myfoodblog.com/recipes/the-post-title/ 
     ^  ^  ^ 
     root custom-post-type title 

いくつかのポストは、私がしたい3つのカテゴリの下にありますこれらのカテゴリに含まれていない記事の元の構造を残すこの

www.myfoodblog.com/recipes/restaurant/the-post-title/ 

www.myfoodblog.com/recipes/users/the-post-title/ 

www.myfoodblog.com/recipes/admin/the-post-title/ 

のような何かを得るためにrestaurantusersadminあるパーマリンクで表示。

this pluginを使ってみましたが、すべての投稿のカスタム投稿タイプカテゴリが表示されます。

また、this questionに記載されている手順に従いましたが、動作していません。パーマリンク構造に変更はありません。

アドバイスをいただければ幸いです。

+0

を追加する必要があり、あなたのカスタムポストタイプのためのプラグインを使用しています。また、カスタムポストタイプを自分で定義したのですか?私は現在作業しているサイトでこれを達成しましたが、すべてのカスタムコードです – Daniel

+0

@ダニエル私は現時点ではプラグインを使用していません。CPTは私が使用しているテーマによって定義されています。 – Yenn

+0

さて、あなたのパーマリンク構造はどうですか?私は '/%category%/%postname%/' WordpressはこのようなURLを提供する必要があります:ドメイン/ CPT /カテゴリ/ postname – Daniel

答えて

2

あなたは、両方のpost_type_linkと協力し、rewrite rule

function recipes_post_link($post_link, $id = 0){ 
    $post = get_post($id); 
    if (is_object($post)){ 
     $terms = get_the_terms($post->ID, 'recipe-category'); 
     foreach($terms as $term) { 
      if($term->slug == 'restaurants' || $term->slug == 'users'){ 
       return str_replace(site_url()."/recipes" , site_url()."/recipes/".$term->slug , $post_link); 
      } 
     } 
    } 
    return $post_link; 
} 
add_filter('post_type_link', 'recipes_post_link', 1, 3); 

function custom_rewrite_basic() { 
    add_rewrite_rule('^recipes/(.+)/(.+)', 'index.php?recipe=$matches[2]', 'top'); 
} 
add_action('init', 'custom_rewrite_basic'); 
+0

これは私が探していたものです!それは完全に動作します!私は 'add_rewrite_rule'関数について知らなかったし、それは必要であるようだ – Yenn

2

Create Post Type

add_action('init', 'codex_recipes_init'); 
/** 
* Register a recipes post type. 
* 
* @link http://codex.wordpress.org/Function_Reference/register_post_type 
*/ 
function codex_recipes_init() { 
    $labels = array(
     'name'    => _x('Recipes', 'post type general name', 'your-plugin-textdomain'), 
     'singular_name'  => _x('Recipe', 'post type singular name', 'your-plugin-textdomain'), 
     'menu_name'   => _x('Recipes', 'admin menu', 'your-plugin-textdomain'), 
     'name_admin_bar'  => _x('Recipe', 'add new on admin bar', 'your-plugin-textdomain'), 
     'add_new'   => _x('Add New', 'recipe', 'your-plugin-textdomain'), 
     'add_new_item'  => __('Add New Recipe', 'your-plugin-textdomain'), 
     'new_item'   => __('New Recipe', 'your-plugin-textdomain'), 
     'edit_item'   => __('Edit Recipe', 'your-plugin-textdomain'), 
     'view_item'   => __('View Recipe', 'your-plugin-textdomain'), 
     'all_items'   => __('All Recipes', 'your-plugin-textdomain'), 
     'search_items'  => __('Search Recipes', 'your-plugin-textdomain'), 
     'parent_item_colon' => __('Parent Recipes:', 'your-plugin-textdomain'), 
     'not_found'   => __('No recipes found.', 'your-plugin-textdomain'), 
     'not_found_in_trash' => __('No recipes found in Trash.', 'your-plugin-textdomain') 
    ); 

    $args = array(
     'labels'    => $labels, 
     'description'  => __('Description.', 'your-plugin-textdomain'), 
     'public'    => true, 
     'publicly_queryable' => true, 
     'show_ui'   => true, 
     'show_in_menu'  => true, 
     'query_var'   => true, 
     'rewrite'   => array('slug' => 'recipes/%type%'), 
     'capability_type' => 'post', 
     'has_archive'  => 'recipes', 
     'hierarchical'  => false, 
     'menu_position'  => null, 
     'supports'   => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments') 
    ); 

    register_post_type('recipes', $args); 
} 

重要:書き換えルールの外観:'rewrite'=> array('slug' => 'recipes/%type%'),

Create Custom Taxonomy

// hook into the init action and call create_recipes_taxonomies when it fires 
add_action('init', 'create_recipes_taxonomies', 0); 

function create_recipes_taxonomies() { 

    // Add new taxonomy, NOT hierarchical (like tags) 
    $labels = array(
     'name'      => _x('Type', 'taxonomy general name', 'textdomain'), 
     'singular_name'    => _x('Type', 'taxonomy singular name', 'textdomain'), 
     'search_items'    => __('Search Types', 'textdomain'), 
     'popular_items'    => __('Popular Types', 'textdomain'), 
     'all_items'     => __('All Types', 'textdomain'), 
     'parent_item'    => null, 
     'parent_item_colon'   => null, 
     'edit_item'     => __('Edit Type', 'textdomain'), 
     'update_item'    => __('Update Type', 'textdomain'), 
     'add_new_item'    => __('Add New Type', 'textdomain'), 
     'new_item_name'    => __('New Type Name', 'textdomain'), 
     'separate_items_with_commas' => __('Separate types with commas', 'textdomain'), 
     'add_or_remove_items'  => __('Add or remove types', 'textdomain'), 
     'choose_from_most_used'  => __('Choose from the most used types', 'textdomain'), 
     'not_found'     => __('No types found.', 'textdomain'), 
     'menu_name'     => __('Types', 'textdomain'), 
    ); 

    $args = array(
     'hierarchical'   => true, 
     'labels'    => $labels, 
     'show_ui'    => true, 
     'show_admin_column'  => true, 
     'update_count_callback' => '_update_post_term_count', 
     'query_var'    => true, 
     'rewrite'    => array('slug' => 'type'), 
    ); 

    register_taxonomy('type', 'recipes', $args); 
} 

Add Filter Post Type Link

function recipes_post_link($post_link, $id = 0){ 
    $post = get_post($id); 
    if (is_object($post)){ 
     $terms = wp_get_object_terms($post->ID, 'type'); 
     if($terms){ 
      return str_replace('%type%' , $terms[0]->slug , $post_link); 
     } 
    } 
    return $post_link; 
} 
add_filter('post_type_link', 'recipes_post_link', 1, 3); 

重要:パーマリンクオプションに行ってリセットしてください。

enter image description here

+0

それを調べていただきありがとうございます。投稿タイプとカスタム分類はすでにテーマによって定義されていて、それぞれ 'recipes'と' recipe-category'という名前になっています。ちょうどあなたの 'recipes_post_link'関数を使う必要があるようですが、それはうまくいきません。また、私はいくつかのカテゴリで動作するように求められていたのですが、 'if($ terms == 'restaurant' || $ terms == 'users' || $ terms == 'admin' ){do stuff} ' – Yenn

関連する問題