Adicione categoria ao URL de publicação personalizada

4

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)
por KWA 30.12.2015 / 09:55

1 resposta

0

Você pode seguir três etapas para a solução

1) Vá para settings > permalinks e altere o permalink como plano ou padrão e salve-o.

2) Agora, vá para a home page do seu site e atualize sua home page. Agora, verifique as páginas da categoria.

3) Agora vá novamente settings > permalinks e agora mude-o /%category%/%postname%/

E agora vá para a página inicial, atualize-a e verifique suas páginas de categoria

Espero que isso ajude você.

    
por deemi-D-nadeem 30.12.2015 / 11:06