Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

carmolim

Custom Port Type, Custom Taxonomy estrutura de URL

Recommended Posts

Olá pessoal, estou começando a estrutura um site para um restaurante, e estou com algumas dúvidas de como estrutura os posts e as categorias.

 

Uma das partes mais importantes do site é a seção do cardápio e gostaria que a URL ficasse com a seguinte estrutura:

 

meusite.com.br/cardapio/temaki/temaki-special nessa estrutura, cardapio seria o Custom Post, temaki seria a categoria e temaki-special o Post Name.

 

Gostaria do seguinte funcionamento baseado em três padrões de URL diferentes:

  1. meusite.com.br/cadapio gostaria que mostrasse todos os posts do criados com o Custom Post Type "cardapio".
  2. meusite.com.br/cardapio/temaki gostaria que mostrasse dos os posts do Custom Post Type "cardapio", mas filtrando os produtos que tem a categoria "temaki".
  3. meusite.com.br/cadapio/temaki/temaki-special gostaria que mostrasse o post aberto do produto temaki-special.

Eu já fiz algumas tentativas utilizando o plugin Types e consegui fazer a primeira e a terceira funcionarem mas segunda eu não consegui de nenhuma maneira.

 

Qualquer ajuda é bem vinda!

 

Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, após pesquisar bastante... e depois de fazer algumas dezenas de testes, cheguei a esse resultado:

add_action('init', 'cria_cardapio');
function cria_cardapio()
{
    register_taxonomy
    (
        'categoria-produto',
        array(),
        array
        (
            'hierarchical' => true,
            'labels' => array
            (
                'name' => _x('Categorias Produtos', 'taxonomy general name'),
                'singular_name' => _x('Categoria Produto', 'taxonomy singular name')
                # And so one
            ),
            'show_ui' => true,
            'query_var' => 'categoria-cardapio',
            'rewrite' => array(
                'slug' => 'cardapio',
            ),
        )
    );

    register_post_type
    (
        'cardapio',
        array
        (
            'labels' => array
            (
                'name' => _x('Itens Cardápio', 'post type general name'),
                'singular_name' => _x('Item Cardápio', 'post type singular name')
            ),
            'supports' => array('title', 'editor', 'thumbnail', 'custom-fields', 'revisions'),
            'public' => true,
            'rewrite' => array
            (
                'slug' => 'cardapio/%categoria-produto%',
                'with_front' => false

            ),
            'query_var' => 'item-cardapio',
            'has_archive' => 'cardapio',
            'taxonomies' => array( 'categoria-produto' ),
        )
    );
}


add_filter('post_type_link', 'cardapio_permalink', 10, 4);
function cardapio_permalink($post_link, $post, $leavename, $sample)
{
    if ( false !== strpos( $post_link, '%categoria-produto%' ) )
    {
        $categoria_produto = get_the_terms( $post->ID, 'categoria-produto' );

        $categoria_produto = $categoria_produto[0]->slug;
       
        $post_link = str_replace( '%categoria-produto%', $categoria_produto, $post_link );
    }

    return $post_link;
}

Para chegar aqui utilizei como referência esses links:

 

http://stackoverflow.com/questions/13553932/define-permalinks-for-custom-post-type-by-taxonomy

 

http://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-rule/5478#5478

 

http://wordpress.stackexchange.com/questions/21022/mixing-custom-post-type-and-taxonomy-rewrite-structures/22490#22490

 

Ainda preciso fazer alguns testes, mas acredito que a base seja essa.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.