• Boa tarde pessoal,
    eu consigo criar o custom post type e suas categorias, mas não consigo chamar na minha página.
    Dos post normais e sua categorias chamo desta forma (abaixo), onde cat é o ID da categoria, e dentro coloco os campos que quero chamar:
    <?php $recent = new WP_Query("cat=34&showposts=4"); while($recent->have_posts()) : $recent->the_post();?>

    Mas para o custom post type não funciona, ele não retorna valor algum quando coloco uma categoria criada por lá.

Visualizando 14 respostas - 1 até 14 (de um total de 14)
  • Pesquise por tax_query que você conseguirá montar o seu loop.

    Neste link, além da explicação e parâmetros tem exemplos de aplicação.
    https://codex.wordpress.org/Class_Reference/WP_Query

    Criador do tópico aline.andrade

    (@alineandrade)

    Oii theandersonn obrigada por sua ajuda,
    mas ainda estou confusa com isso;
    Pode me ajudar em um exemplo:
    Criei o tipo de post “filmes”,
    e dentro dele a categoria “teste_filme” de ID 52.
    Como eu chamo isso para aparecer na tela em loop?

    No link que eu te indiquei tem exemplos.

    Veja esse: Simple Taxonomy Query:

    $args = array(
    	'post_type' => 'post',
    	'tax_query' => array(
    		array(
    			'taxonomy' => 'people',
    			'field'    => 'slug',
    			'terms'    => 'bob',
    		),
    	),
    );
    $query = new WP_Query( $args );

    Em taxonomy você insere a taxonomia que você criou e em terms a categoria que vc quer puxar pro seu loop.

    Criador do tópico aline.andrade

    (@alineandrade)

    Sim, isso eu coloquei.
    Fiz a substituição…
    A minha dúvida é como gerar um loop disso.
    Escrever na página título, resumo etc de cada post

    Criador do tópico aline.andrade

    (@alineandrade)

    Eu coloquei assim:

    <?php
    $args = array(
    	'post_type' => 'post',
    	'tax_query' => array(
    		array(
    			'taxonomy' => 'film',
    			'field'    => 'slug',
    			'terms'    => 'teste_cat',
    		),
    	),
    );
    $query = new WP_Query( $args ); while($recent->have_posts()) : $recent->the_post();
    ?>
    <h3 class="titulo"><?php the_title(); ?></h3>
    <p class="texto"><?php the_excerpt(); ?></p>
    <?php endwhile; ?>

    E ele retorna:
    Partnerships
    Partnerships page content

    Em post_type precisa passar a taxomia criada, no seu caso film e abaixo passe tb o term.

    $args = array(
    	'post_type' => 'film',
            'term' => 'taxonomy-category-criada',
             .....
    Criador do tópico aline.andrade

    (@alineandrade)

    Desculpe a amolação, mas ainda não entendi, desculpe….
    Eu sou nova nessa parte de estruturação
    Vou colocar o código de tudo aqui, acho que assim você entende o que eu criei, talvez tenha feito algo errado:

    Na function eu inseri:

    add_action( 'init', 'create_post_type_film' );
    function create_post_type_film() {
        $labels = array(
    	    'name' => _x('Films', 'post type general name'),
    	    'singular_name' => _x('Film', 'post type singular name'),
    	    'add_new' => _x('Add New', 'film'),
    	    'add_new_item' => __('Add New Film'),
    	    'edit_item' => __('Edit Film'),
    	    'new_item' => __('New Film'),
    	    'all_items' => __('All Films'),
    	    'view_item' => __('View Film'),
    	    'search_items' => __('Search Films'),
    	    'not_found' =>  __('No Films found'),
    	    'not_found_in_trash' => __('No Films found in Trash'),
    	    'parent_item_colon' => '',
    	    'menu_name' => 'Films'
        );
    
        register_post_type( 'film', array(
    	    'labels' => $labels,
    	    'public' => true,
    	    'publicly_queryable' => true,
    	    'show_ui' => true,
    	    'show_in_menu' => true,
    	    'has_archive' => 'films',
    	    'rewrite' => array(
    		 'slug' => 'films',
    		 'with_front' => false,
    	    ),
    	    'capability_type' => 'post',
    	    'has_archive' => true,
    	    'hierarchical' => false,
    	    'menu_position' => null,
    	    'supports' => array('title','editor','author','thumbnail','excerpt','comments')
    	    )
        );
    
        register_taxonomy( 'film_category', array( 'film' ), array(
            'hierarchical' => true,
            'label' => __( 'Film Category' ),
            'labels' => array( // Labels customizadas
    	    'name' => _x( 'Categories', 'taxonomy general name' ),
    	    'singular_name' => _x( 'Category', 'taxonomy singular name' ),
    	    'search_items' =>  __( 'Search Categories' ),
    	    'all_items' => __( 'All Categories' ),
    	    'parent_item' => __( 'Parent Category' ),
    	    'parent_item_colon' => __( 'Parent Category:' ),
    	    'edit_item' => __( 'Edit Category' ),
    	    'update_item' => __( 'Update Category' ),
    	    'add_new_item' => __( 'Add New Category' ),
    	    'new_item_name' => __( 'New Category Name' ),
    	    'menu_name' => __( 'Category' ),
    	),
            'show_ui' => true,
            'show_in_tag_cloud' => true,
            'query_var' => true,
            'rewrite' => array(
                'slug' => 'films/categories',
                'with_front' => false,
            ),
            )
        );
    
        register_taxonomy_for_object_type( 'tags', 'film' );
    }

    E dentro do painel do WP eu criei (dentro do espaço de filmes) as categorias comédia, romance e ação

    Neste caso então:
    ‘post_type’ – é Films
    ‘taxonomy’ – ?
    ‘term’ – é o slug da categoria criada? NO caso “comedia”

    Olhei e seu código e tem alguns erros como na register_taxonomy.
    Embora vc consiga visualizar o CPT no dashboard ele não está gerando corretamente as urls de categorias por exemplo.

    Sugiro que vc leia no Codex sobre Custom Post Type e Hierarquia de Templates.
    É importante utilizarmos os templates corretos para não embolarmos o meio de campo. Utilizando o archives.php podemos listar os posts do CPT com loop padrão.

    Moderador Míriam de Paula

    (@miriamdepaula)

    O loop é igual, moço! O que vai mudar é o parametro. Pras “categorias” de um Custom Post Type, você deve usar taxonomy!

    Dá uma olhada no link do Codex: https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

    Criador do tópico aline.andrade

    (@alineandrade)

    Mirriam eu não entendi o que seria o ‘terms’ => ‘bob’

    Moderador Míriam de Paula

    (@miriamdepaula)

    Aline, no exemplo do Codex, imagine a categoria “pessoas” (people)
    Esta categoria “pessoas” possui termos (terms), certo? Um desses termos ali, é “bob”

    Num exemplo pratico, seria mais ou menos assim:

    Custom Post Type: Filmes
    Taxonomy: Genero

    Dentro da taxonomia Genero, eu tenho: Ação, Comédia, Romance, Ficção, Terror, etc…. que são os termos da minha taxonomia.

    Entendeu?

    Criador do tópico aline.andrade

    (@alineandrade)

    Mirriam, acredito que entendi sim…
    Estava fazendo confusão porque
    a taxonomy no meu caso é “categoria” a palavra.
    Acho que foi isso.

    Mas agora como eu retorno o valor da tela?
    Coloquei assim o código:

    <?php
    $args = array(
    	'post_type' => 'film',
    	'tax_query' => array(
    		array(
    			'taxonomy' => 'film_category',
    			'field'    => 'slug',
    			'terms'    => 'comedia',
    		),
    	),
    );
    $query = new WP_Query( $args ); ?>

    Moderador Míriam de Paula

    (@miriamdepaula)

    O loop é padrão. No caso do uso da classe WP_Query() fica assim:
    https://codex.wordpress.org/Class_Reference/WP_Query

    Criador do tópico aline.andrade

    (@alineandrade)

    Funcionou =D
    Muito obrigada, deu certo.

    Só mais uma duvida…
    Para os post normal eu coloco assim para filtrar a linguagem:
    <?php $recent = new WP_Query("cat=33&showposts=4&lang=pt"); while($recent->have_posts()) : $recent->the_post();?>...

    Como eu acrescento este parametro lang=pt neste loop?
    $the_query = new WP_Query( $args );

Visualizando 14 respostas - 1 até 14 (de um total de 14)

O tópico ‘Categoria para custom post type’ está fechado para novas respostas.