Estou tentando criar uma postagem personalizada com taxonomia e categorias personalizadas. Estrutura é como:
Produto:
- Tem categorias
- possui taxonomia
Criar tipo de postagem personalizada:
function create_alco_custom_post() {
$review_slug = 'reviews';
$labels = array(
'name' => __( 'Recenzje' ),
'singular_name' => __( 'Recenzja' ),
'add_new' => __( 'Nowa recenzja' ),
'add_new_item' => __( 'Dodaj nową recenzje' ),
'edit_item' => __( 'Edytuj recenzje' ),
'new_item' => __( 'Nowa recenzja' ),
'view_item' => __( 'Zobacz recenzje' ),
'search_items' => __( 'Szukaj w recenzjach' ),
'not_found' => __( 'Nie znaleziono recenzji' ),
'not_found_in_trash' => __( 'Nie znaleziono recenzji w koszu' ),
);
$args = array(
'labels' => $labels,
'menu_icon' => 'dashicons-format-quote',
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => '%review-category%','with_front' => true),
'hierarchical' => true,
'menu_position' => 0,
'exclude_from_search' => false,
'supports' => array(
'title',
'editor',
'thumbnail'
),
'taxonomies' => array('category')
);
register_post_type( 'review', $args );
}
add_action( 'init', 'create_alco_custom_post' );
Depois, adiciono taxonomia:
$labels = array(
'name' => __( 'Producenci', 'alkowiki' ),
'singular_name' => __( 'Producent', 'alkowiki' ),
'search_items' => __( 'Wyszukaj wśród producentów', 'alkowiki' ),
'popular_items' => __( 'Popularni producenci', 'alkowiki' ),
'all_items' => __( 'Wszystcy producenci', 'alkowiki' ),
'parent_item' => __( 'Producent rodzic', 'alkowiki' ),
'edit_item' => __( 'Edytuj producenta', 'alkowiki' ),
'update_item' => __( 'Aktualizuj producenta', 'alkowiki' ),
'add_new_item' => __( 'Dodaj nowego producenta', 'alkowiki' ),
'new_item_name' => __( 'Nowy producent', 'alkowiki' ),
'separate_items_with_commas' => __( 'Oddziel producentów przecinkami', 'alkowiki' ),
'add_or_remove_items' => __( 'Dodaj lub usuń producentów', 'alkowiki' ),
'choose_from_most_used' => __( 'Wybierz z najczęściej wykorzystywanych producentów', 'alkowiki' )
);
$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'query_var' => true
);
register_taxonomy( 'producents', 'review', $args );
E finalmente mudo a estrutura de links:
add_filter('post_link', 'category_permalink', 1, 3);
add_filter('post_type_link', 'category_permalink', 1, 3);
function category_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%review-category%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'category');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
$taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'nieskateryzowane';
return str_replace('%review-category%', $taxonomy_slug, $permalink);
}
Minha estrutura de postagens nas configurações do WP é /%category%/%postname%/
E os URLs das postagens são criados corretamente, os arquivos de categorias exibem as postagens corretamente, os links são criados como eu queria, mas quando vou ao site do produto (URL / site / categoria / nome do produto) recebo 404. Quando visito o URL com taxonomia em vez de categoria (site / taxonomia / nome do produto) Estou sendo redirecionado para o site / category / product-name e também termina com 404.
Estou lutando com isso há dias, alguma idéia?
EDITAR:
Infelizmente tive que trocar os permalinks para o padrão (% postname%) - Eu quero que os WP Posts padrão tenham uma estrutura de URL como essa. Também alterei a categoria padrão (que está conectada a postagens padrão) para uma taxonomia personalizada chamada "minha categoria" e a registro para meu tipo de postagem personalizada. Então agora há 2 taxonomias, (o mesmo que o primeiro inserido). Arquivar páginas para eles dá 404, e a página do produto também ainda dá 404. Como devo definir a estrutura de reescrita?
Vou precisar o que quero alcançar:
- site.com/%taxonomy1%/ - arquivar a postagem personalizada com essa taxonomia
- site.com/%taxonomy2%/ - arquivar a postagem personalizada com essa taxonomia
- site.com/%taxonomy1%/custom-post-name/ - página de postagem personalizada (link somente com a primeira taxonomia)