Help com CTP

14 views
Skip to first unread message

Thiago Santos

unread,
Dec 14, 2015, 9:35:37 AM12/14/15
to wordpres...@googlegroups.com
Pessoal, podem me dizer o que tem de errado na minha função para gerar um CTP? Não consigo carregar a page dele com os posts!

    //SHOPPING

    /**
     * Adicionamos uma acção no inicio do carregamento do WordPress
     * através da função add_action( 'init' )
     */
    add_action( 'init', 'create_post_type_shopping' );

    /**
     * Esta é a função que é chamada pelo add_action()
     */
    function create_post_type_shopping() {

        /**
         * Labels customizados para o tipo de post
         * 
         */
        $labels = array(
            'name' => _x('Shopping', 'shopping'),
            'singular_name' => _x('Shopping', 'shopping'),
            'add_new' => _x('Adicionar novo', 'shopping'),
            'add_new_item' => __('Novo estabelecimento'),
            'edit_item' => __('Editar estabelecimento'),
            'new_item' => __('Novo estabelecimento'),
            'all_items' => __('Ver todos '),
            'view_item' => __('Ver estabelecimento'),
            'search_items' => __('Buscar Estabelecimento'),
            'not_found' =>  __('Nenhuma estabelecimento encontrada'),
            'not_found_in_trash' => __('Nenhuma estabelecimento encontrada na lixeira'),
            'parent_item_colon' => '',
            'menu_name' => 'Shopping'
        );
        
        /**
         * Registamos o tipo de post shopping através desta função
         * passando-lhe os labels e parâmetros de controle.
         */
        register_post_type( 'shopping', array(
            'labels' => $labels,
            'public' => true,
            'publicly_queryable' => true,
            'show_ui' => true,
            'show_in_menu' => true,
            'has_archive' => 'shopping',
            'rewrite' => array(
                'slug' => 'shopping',
                'with_front' => true,
            ),
            'capability_type' => 'post',
            'has_archive' => true,
            'hierarchical' => false,
            'menu_position' => 5,
            'supports' => array('title','editor','author','thumbnail','excerpt','comments')
            )
        );
        
        /**
         * Registamos a categoria de shopping para o tipo de post shopping
         */
        register_taxonomy( 'shopping_cat', array( 'shopping' ), array(
            'hierarchical' => true,
            'label' => __( 'Categorias' ),
            'labels' => array( // Labels customizadas
                'name' => _x( 'Categorias', 'shopping_cat' ),
                'singular_name' => _x( 'Categoria', 'shopping_cat' ),
                'search_items' =>  __( 'Buscar Categorias' ),
                'all_items' => __( 'Ver todas' ),
                'parent_item' => __( 'Categoria pai' ),
                'parent_item_colon' => __( 'Categoria pai:' ),
                'edit_item' => __( 'Editar Categoria' ),
                'update_item' => __( 'Atualizar Categoria' ),
                'add_new_item' => __( 'Nova cateboria' ),
                'new_item_name' => __( 'Nome da nova categoria' ),
                'menu_name' => __( 'Categorias' ),
                'menu_icon' =>  'dashicons-megaphone',
            ),
            'show_ui' => true,
            'show_in_tag_cloud' => true,
            'query_var' => true,
            'rewrite' => array(
                'slug' => 'shopping/categorias',
                'with_front' => false,
            ),
            )
        );
        
        /** 
         * Esta função associa tipos de categorias com tipos de posts.
         * Aqui associamos as tags ao tipo de post shopping.
         */
        register_taxonomy_for_object_type( 'tags', 'shopping' );
        
    }



Atc,
Thiago Santos
www.tigurio.com.br
71 9200-1869
______________________

GTalk: tig...@gmail.com
Twitter: twitter.com/tigurio
Skype: tigurio
Facebook: http://www.facebook.com/tigurio
FanPage:  http://www.facebook.com/fanpageTigurio 
Linked In: http://br.linkedin.com/in/tigurio
________________________________________

wpmidia lab

unread,
Dec 14, 2015, 5:00:43 PM12/14/15
to wordpres...@googlegroups.com
Aparece algum erro na tela? Se não aparecer, por gentileza ativa o WP_DEBUG que fica no arquivo wp-config.php
Este e-mail foi enviado por um computador sem vírus e protegido pelo Avast.
www.avast.com

--
Regras do Grupo: http://bit.ly/1lOeYqs
 
Projeto WordPress: http://br.wordpress.org/
Temas: http://wordpress.org/extend/themes/
Plugins: http://wordpress.org/extend/plugins/
Grupo no Facebook: http://www.facebook.com/groups/wordpress.brasil/
---
Você recebeu essa mensagem porque está inscrito no grupo "WordPress Brasil Lista" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para wordpress-bras...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Míriam de Paula 
Twitter: @miriamdepaula

desenvolvimento web
http://wpmidia.com.br
twitter: @wpmidia

WordPress Brasil no Facebook:

Leo Baiano

unread,
Dec 15, 2015, 5:33:11 AM12/15/15
to wordpres...@googlegroups.com
Como você não deu muito detalhes vou dar uns chutes aqui, mas na próxima perde um pouquinho de tempo explicando o que você já tentou fazer, se aparece alguma mensagem de erro e etc... essas informações poupam tempo, faz com que as pessoas consigam entender melhor seu problema.

Primeiro, não precisa repetir o has_archive tá, você está colocando ele duas vezes no array, deixa só o que tem o valor true.

Sobre não exibir os posts na página eu imagino que você acessa a url seusite.com.br/prefixo/shopping e receba um erro 404 ou aparece o template do arquivo page.php ou index.php e não do archive.php, é uma dessas coisas?

Penso em algumas possibilidades:

1 - Depois que você criou o post type você foi em configurações->links permanentes e clicou em salvar ou fez qualquer outra coisa para reescrever as rotas?

2 - Em algum momento você criou alguma página, categoria ou qualquer outra coisa que fique salvo na tabela posts e que poderia gerar uma url com /shopping/ no meio? Se sim então você vai precisar excluir, exclui até da lixeira, depois disso vai lá em configurações->links permanentes e salva.

3 - Qual o nome do arquivo que você criou ou espera que carregue os posts do CPT? Esse arquivo está com o loop normal ou você modificou de alguma forma?

4 - Perceba que acima estou supondo que seu problema é só no front, na exibição do conteúdo, é isso mesmo? O menu do CPT aparece normalmente no admin e você consegue cadastrar posts normalmente?

5 - Quando você clica em ver post, na listagem de posts do CPT ou na página de edição do post, o post carrega normalmente? Se sim qual a URL? Se não, qual o erro? Qual url você está tentando acessar para ver a lista de posts do CPT?

6 - Veja que lá em cima quando eu dei um exemplo da sua url eu coloquei /prefixo/, fiz isso porque você definiu o with_front como true na criação do CPT, é isso mesmo que você pretendia? Será que está acessando a url correta? Já tentou colocar o with_front como false? Cada alteração na criação do CPT pode afetar a rota e precisa ir lá nos permalinks para salvar novamente.

Enfim, acho que já tem bastante coisa ai para você pensar e testar né? Se não conseguir resolver volta aqui com mais detalhes.


Amplexos,

Leo Baiano
Web Developer

Thiago Santos

unread,
Dec 15, 2015, 7:40:56 AM12/15/15
to WordPress Brasil Lista
Respondendo aos questionamentos:

Mirian, não está dando nenhum erro no projeto. O debug está ativo 


Leo:
1 - Depois que você criou o post type você foi em configurações->links permanentes e clicou em salvar ou fez qualquer outra coisa para reescrever as rotas?
Sim, fiz o procedimento.

2 - Em algum momento você criou alguma página, categoria ou qualquer outra coisa que fique salvo na tabela posts e que poderia gerar uma url com /shopping/ no meio? Se sim então você vai precisar excluir, exclui até da lixeira, depois disso vai lá em configurações->links permanentes e salva.
Não. Nenhuma página, ou categoria foi criada ou algo relacionado foi criado.

3 - Qual o nome do arquivo que você criou ou espera que carregue os posts do CPT? Esse arquivo está com o loop normal ou você modificou de alguma forma?
O arquivo que carrega a lista de posts do CTP é o page-shopping.php. Meu loop está assim:
<?php $loop = new WP_Query( array( 'post_type' => 'shopping' ) ); ?>

<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

4 - Perceba que acima estou supondo que seu problema é só no front, na exibição do conteúdo, é isso mesmo? O menu do CPT aparece normalmente no admin e você consegue cadastrar posts normalmente?
No admin está tudo ok.

5 - Quando você clica em ver post, na listagem de posts do CPT ou na página de edição do post, o post carrega normalmente? Se sim qual a URL? Se não, qual o erro? Qual url você está tentando acessar para ver a lista de posts do CPT?
Sim, o post ele carrega normalmente. A URL fica "meusite.com.br/shopping/titulo-do-post"
O arquivo do post é o single-shopping.php. A url para a lista de todos os posts do CTP é meusite.com.br/shopping
Não aparece nenhuma mensagem de erro. Sou direcionado para o arquivo index.php (ainda não criei a página do 404)

6 - Veja que lá em cima quando eu dei um exemplo da sua url eu coloquei /prefixo/, fiz isso porque você definiu o with_front como true na criação do CPT, é isso mesmo que você pretendia? Será que está acessando a url correta? Já tentou colocar o with_front como false? Cada alteração na criação do CPT pode afetar a rota e precisa ir lá nos permalinks para salvar novamente.
Sim, já testei usando true e false e o problema persiste. Sempre que faço alguma alteração para testar, salvo as configurações de permalinks.

Leo Baiano

unread,
Dec 15, 2015, 7:47:18 AM12/15/15
to wordpres...@googlegroups.com
Se você não criou nenhuma página chamada shopping o seu arquivo page-shopping.php nunca será chamado pelo WordPress. O que está acontecendo é que o WordPress está procurando pelo archive-shopping.php, não encontrou e procurou pelo archive.php, não encontrou e então chamou o index.php e como o index.php provavelmente tem suas WP_Query no lugar do loop padrão, termina não mostrando os posts do CPT.

Renomeie o arquivo page-shopping.php para archive-shopping.php, tira o WP_Query, pode usar o loop padrão nele. Se tiver salvado os permalinks depois da criação do CPT e se realmente nunca tiver criado nada com o nome shopping vai funcionar.

Uma dica, leia sobre a hierarquia de templates do WordPress man.


--
Regras do Grupo: http://bit.ly/1lOeYqs
 
Projeto WordPress: http://br.wordpress.org/
Temas: http://wordpress.org/extend/themes/
Plugins: http://wordpress.org/extend/plugins/
Grupo no Facebook: http://www.facebook.com/groups/wordpress.brasil/
---
Você recebeu essa mensagem porque está inscrito no grupo "WordPress Brasil Lista" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para wordpress-bras...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Leo Baiano

unread,
Dec 15, 2015, 2:41:34 PM12/15/15
to wordpres...@googlegroups.com
Thiago, deu certo?

Thiago Santos

unread,
Dec 16, 2015, 7:16:31 AM12/16/15
to WordPress Brasil Lista
Opa, deu certo sim. Já havia tentado via archive-shopping mas por algum motivo n funcionou. Talvez tenha sido TAMBÉM, alguma relação com o wp_query

Obrigado a todos pela imensa colaboração e contribuição.

Leo Baiano

unread,
Dec 16, 2015, 7:34:45 AM12/16/15
to wordpres...@googlegroups.com
IMHO só se deve instanciar a WP_Query() quando é preciso criar mais de um loop em uma página, em todos os outros casos da para utilizar a query padrão, basta criar o template correto, e se for necessário modificar alguma característica da query padrão usa o preguetinho.

--
Regras do Grupo: http://bit.ly/1lOeYqs
 
Projeto WordPress: http://br.wordpress.org/
Temas: http://wordpress.org/extend/themes/
Plugins: http://wordpress.org/extend/plugins/
Grupo no Facebook: http://www.facebook.com/groups/wordpress.brasil/
---
Você recebeu essa mensagem porque está inscrito no grupo "WordPress Brasil Lista" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para wordpress-bras...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages