Eu me deparei com outro maravilhoso problema 404. Eu estou tentando ter 2 tipos de post separados que compartilham a mesma lesma de reescrita. Eu corri minhas regras de reescrita, e quando eu testei apenas 1 do CPT funciona - o outro recebe um 404. Minha reescrita que eu gostaria de usar para ambos é:
'rewrite' => array('slug' => 'team/%teamtype%'),
Alguém sabe como lidar com isso?
add_action( 'init', 'create_rider_type' );
function create_rider_type() {
register_post_type('riders',
array(
'description' => 'rider custom post type',
'show_ui' => true,
'menu_position' => 5,
'menu_icon' => get_stylesheet_directory_uri() . '/images/riders.png',
'exclude_from_search' => false,
'labels' => array(
'name' => 'Team Riders',
'singular_name' => 'Rider',
'add_new' => 'Add New rider',
'add_new_item' => 'Add New rider',
'edit' => 'Edit riders',
'edit_item' => 'Edit rider',
'new_item' => 'New rider',
'view' => 'View rider',
'view_item' => 'View rider',
'search_items' => 'Search riders',
'not_found' => 'No riders found',
'not_found_in_trash' => 'No riders found in Trash',
'parent' => 'Parent rider',
),
'hierarchical' => false,
'supports' => array('title','editor','excerpt', 'trackbacks','custom-fields', 'comments','revisions','thumbnail','author','page-attributes'),
'public' => true,
'rewrite' => array('slug' => 'team/%teamtype%'),
'taxonomies' => array('teamtype')
)
);
}
add_action( 'init', 'create_sponsor_type' );
function create_sponsor_type() {
register_post_type('sponsors',
array(
'description' => 'sponsor custom post type',
'show_ui' => true,
'menu_position' => 5,
'menu_icon' => get_stylesheet_directory_uri() . '/images/sponsors.png',
'exclude_from_search' => false,
'labels' => array(
'name' => 'Team sponsors',
'singular_name' => 'sponsor',
'add_new' => 'Add New sponsor',
'add_new_item' => 'Add New sponsor',
'edit' => 'Edit sponsors',
'edit_item' => 'Edit sponsor',
'new_item' => 'New sponsor',
'view' => 'View sponsor',
'view_item' => 'View sponsor',
'search_items' => 'Search sponsors',
'not_found' => 'No sponsors found',
'not_found_in_trash' => 'No sponsors found in Trash',
'parent' => 'Parent sponsor',
),
'hierarchical' => false,
'supports' => array('title','editor','excerpt', 'trackbacks','custom-fields', 'comments','revisions','thumbnail','author','page-attributes'),
'public' => true,
'rewrite' => array('slug' => 'team/%teamtype%'),
'taxonomies' => array('teamtype')
)
);
}
** * ** * ** * *** * Atualizar * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * *
O código de reescrita do CPT original que publiquei foi simplificado para que eu pudesse ir direto ao ponto, mas talvez faça mais sentido se você puder ver como estou lidando com esses permalinks com minha taxonomia personalizada. Eu atualizei o código para mostrar.
Eu realmente gostaria de mantê-los em separado como tipos de organização, bem como metabólitos separados para cada um. Por favor, verifique as reescritas atualizadas para os CPT's, bem como a minha configuração de taxonomia abaixo:
add_action( 'init', 'create_team_taxonomies' );
function create_team_taxonomies() {
register_taxonomy(
'teamtype',
array('riders','sponsors'),
array(
'labels' => array(
'name' => 'Team Types',
'singular_name' => 'Team Type',
'search_items' => 'Search Team Types',
'popular_items' => 'Popular Team Types',
'all_items' => 'All Team Types',
'parent_item' => 'Parent Team Type',
'parent_item_colon' => 'Parent Team Type:',
'edit_item' => 'Edit Team Type',
'update_item' => 'Update Team Type',
'add_new_item' => 'Add New Team Type',
'new_item_name' => 'New Team Type Name'
),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'query_var' => 'teamtype',
'show_tagcloud' => true,
'rewrite' => array( 'slug' => 'team', 'with_front' => false)
)
);
}
E aqui está como eu configuro a reescrita quando seleciono a Taxonomia e publico a postagem:
add_filter('post_link', 'teamtypepermalink', 10, 3);
add_filter('post_type_link', 'teamtypepermalink', 10, 3);
function teamtypepermalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%teamtype%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'teamtype');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'not-specified';
return str_replace('%teamtype%', $taxonomy_slug, $permalink);
}