Suporte » Desenvolvendo com WordPress » Página category parou de listar custom post type

  • Resolvido Ramires

    (@ramiressilva)


    Agradeço desde já a quem tomar seu tempo para me auxiliar.

    Estou desenvolvendo um site no qual houve a necessidade de criar custom post type, até aí tudo bem. Listei os vários tipos de post’s em seções diferentes na minha home sem dificuldades. Na página de categoria (category.php) enfrentei dificuldades na hora da paginação, mas consegui resolver com um código no functions.php. A partir daí todos os posts estavam sendo exibidos sem problemas nas suas respectivas categorias. Porém, do dia pra noite as páginas de categorias param de listar os posts. Eles apareciam na página inicial, a single.php apresentava o conteúdo normal, mas a category.php não. Mudei o código de várias formas, desinstalei plugins, mas nada resolveu e aparentemente está tudo certo. Peço ajuda para solucionar esse problema. Segue as linhas de código que estou usando.

    FUNCTIONS.PHP

    // função que acrescentar argumentos no loop do category.php
    
    function order_category_archives( $query ) {
      if ( is_category(array('turismo','ecoturismo','hoteis','moteis','pontos-turisticos','shoppings')) && $query->is_main_query() ){ // is_category() can specify a category, if necessary
        $query->set( 'post_type', 'turismo' );
        $query->set( 'orderby', 'title' );
        $query->set( 'order', 'ASC' );
      }
      if ( is_category(array('eventos','artes','festa','festival','teatro','show')) && $query->is_main_query() ){ // is_category() can specify a category, if necessary
        $query->set( 'post_type', 'eventos' );
        $query->set( 'meta_key', 'data_evento' );
        $query->set( 'orderby', 'meta_value_num' );
        $query->set( 'order', 'ASC' );
      }
      if ( is_category(array('cidade-e-cotidiano','cidade','cotidano','cultura','dicas','esporte')) && $query->is_main_query() ){ // is_category() can specify a category, if necessary
        $query->set( 'post_type', 'cidade-e-cotidiano' );
        $query->set( 'orderby', 'date' );
        $query->set( 'order', 'DESC' );
      }
    }
    //função que cria o custom post type EVENTOS
      
      $labels = array(
        'name'                => __( 'Eventos', THEMENAME ),
        'singular_name'       => __( 'Eventos', THEMENAME ),
        'add_new'             => __( 'Adicionar novo', THEMENAME ),
        'add_new_item'        => __( 'Adicionar novo post de Eventos', THEMENAME ),
        'edit_item'           => __( 'Editar post de Eventos', THEMENAME ),
        'new_item'            => __( 'Novo post de Eventos', THEMENAME ),
        'all_items'           => __( 'Todos posts de Eventos', THEMENAME ),
        'view_item'           => __( 'Ver post de Eventos', THEMENAME ),
        'search_items'        => __( 'Pesquisar posts de Eventos', THEMENAME ),
        'not_found'           => __( 'Nenhum post de Eventos encontrado', THEMENAME ),
        'not_found_in_trash'  => __( 'Nenhum post de Eventos no lixo', THEMENAME ),
        'menu_name'           => __( 'Eventos', THEMENAME ),
      );
     
      $supports = array( 'title', 'editor', 'thumbnail', 'author' );
     
      $slug = get_theme_mod( 'eventos_permalink' );
      $slug = ( empty( $slug ) ) ? 'eventos' : $slug;
     
      $args = array(
        'labels'              => $labels,
        'public'              => true,
        'publicly_queryable'  => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'query_var'           => true,
        'rewrite'             => array( 'slug' => $slug ),
        'capability_type'     => 'post',
        'has_archive'         => true,
    	//'supports'			  => array('thumbnail'),
        'hierarchical'        => false,
        'menu_position'       => -2,
        'supports'            => $supports,
    	'taxonomies'          => array( 'category' ),
    	'menu_icon' => 'dashicons-tickets-alt',
      );
     
      register_post_type( 'eventos', $args );
    //último codigo que acrescentei antes do erro, inserção do analytics
    
    add_action('wp_head','my_analytics', 20);function my_analytics() {
        
        echo "<script async src='https://www.googletagmanager.com/gtag/js?id=UA-109541342-1'></script>
        <script>
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
    
          gtag('config', 'UA-109541342-1');
        </script>";
    }

    CATEGORY.PHP

    // código de listagem no category.php
    
    <?php while ( have_posts() ) : the_post(); ?>
                    <?php
                        // Lê categoria
                            $categoria = get_the_category($post->ID); 
                            if($categoria[1]) { // Se o post estiver em uma sub-categoria...
                                $nomeCategoria = $categoria[1]->cat_name; // variavel nomeCategoria recebe o nome da categoria na posição 1 (subcategoria)...
                                $urlCategoria = get_category_link($categoria[1]->cat_ID); // pega a url da categoria na posição 1
                                $slugCategoria = $categoria[1]->slug; // slug da categoria será na posição 1
                                    if($nomeCategoria=="Em Destaque") { // se o nome da categoria na posição 1 for igual a Dicas, o nome da categoria passa a ser o da posição 0
                                        $nomeCategoria = $categoria[0]->cat_name;
                                        $urlCategoria = get_category_link($categoria[0]->cat_ID); // pega a url da categoria na posição 0
                                        $slugCategoria = $categoria[0]->slug; // slug da categoria será na posição 0
                                    }
                                    end;
                            }
                            else { // ...caso não esteja...
                                if($categoria[0]) { //...mas está em uma categoria pai...
                                    $nomeCategoria = $categoria[0]->cat_name; // variavel nomeCategoria recebe o nome na posição 0
                                    $urlCategoria = get_category_link($categoria[0]->cat_ID); // pega a url da categoria na posição 0
                                    $slugCategoria = $categoria[0]->slug; // slug da categoria será na posição 1
                                }
                                end;
                            }				
                        ?>
    
                        <div class="list-post">
                            <?php if ($nomeCategoria=="Videos"){ $link_video = get_field( "link_do_video" ); $categoriaExibir = "<span class='icon-sou-brasilia-play'></span>";  ?>
                                <a href="<?php echo $link_video; ?>" class="link-post" title="<?php the_title(); ?>" data-lity>
                            <?php } else { $categoriaExibir = "<p class='categoria'>".$categoria[1]->cat_name."</p>"; ?>
                                <a href="<?php the_permalink(); ?>" class="link-post" title="<?php the_title(); ?>">
                            <?php } ?>
                                    <?php /* Lê tamanho de imagem destacada personalizado */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'quad600' ); ?>
                                    <div class="chamada">
                                        <?php if($nomeCategoria == "Cidade e Cotidiano" || $nomeCategoria == "Cidade" || $nomeCategoria == "Cotidiano" || $nomeCategoria == "Cultura" || $nomeCategoria == "Dicas" || $nomeCategoria == "Críticas" || $nomeCategoria == "Resenhas" || $nomeCategoria == "Notícias"){ ?>
                                        <p class="data"><?php echo get_the_time('d F Y'); ?></p><?php } ?>
                                        
                                        <?php /* DATA EVENTO */ if($nomeCategoria == "Eventos" || $nomeCategoria == "Show" || $nomeCategoria == "Festa" || $nomeCategoria == "Festival" || $nomeCategoria == "Teatro" || $nomeCategoria == "Arte"){ ?>
                                        <?php date_default_timezone_set('America/Sao_Paulo');setlocale(LC_ALL, 'pt_BR');$date = strtotime(get_field('data_evento')); ?>
                                            <div class="data evento <?php if(date('w', $date) == 0 || date('w', $date) == 6 ){ echo "fds";} ?>">
                                                <?php echo strftime('%e', $date); echo "/"; echo strftime('%b', $date); ?>
                                            </div>
                                        <?php } ?>
                                        
                                        <?php // echo $categoriaExibir; ?>
                                        <h3 class="titulo-chamada-post"><?php if($nomeCategoria == "Em Exibição") { $titulocurto = get_field( "titulo_curto" ); echo $titulocurto; } else { the_title(); } ?></h3>
                                        <h4 class="descricao-chamada-post"><?php echo get_field( "chamada" ); ?> </h4>
                                    </div>
                                    <div class="pelicula-hover"></div>
                                    <div class="pelicula-radial"></div>
                                    <div class="pelicula-linear-vertical"></div>
                                    <div class="imagem-post" style="background-image: url(<?php echo $image[0]; ?>);"></div>
                                </a>
                        </div>
    
                    <?php endwhile; ?>

    Perdoem qualquer erro, não sou amador, mas também não sou expert.

  • O tópico ‘Página category parou de listar custom post type’ está fechado para novas respostas.