Suporte » Desenvolvendo com WordPress » Criar uma página dinâmica

  • Resolvido DouglasNickson

    (@douglasnickson)


    Fala galera tudo bem com vocês?

    É o seguinte, eu estou fazendo uma blog sobre séries e preciso criar uma página dinâmica para mostrar as notícias relacionadas a determinada série, por exemplo:

    Tenho um página sobre a série Game of Thrones nessa página tem as informações da série e tudo mais, nessa página vai ter um link de nome “novidades” esse link deve ir pra outra página e mostrar todos os posts relacionados aquela série deu pra entender?

    Eu consegui fazer utilizando o new WP_Query mas do modo que eu fiz eu teria que criar uma página novidades para cada série cadastrada no site, e eu acho que isso não e la muito certo, então queria fazer apenas uma página dinamica para que quando o visitante clicasse no link “novidades” nesse link enviasse algum paramentro para essa página e ela mostrasse apenas o conteúdo relacionado aquela série.

    Se poderem me ajudar eu agradeço =)

Visualizando 15 respostas - 1 até 15 (de um total de 15)
  • DouglasNickson, como você imaginou esse relacionamento entre a pagina da serie e suas respectivas novidades? Com categorias?

    Criador do tópico DouglasNickson

    (@douglasnickson)

    No caso eu fiz o seguinte, em todo post relacionado a uma série eu crio uma tag com o nome da série, por exemplo:
    Eu crio uma página sobre a série game of thrones ai em todos os posts que eu crio sobre game of thrones eu coloco uma tag com o mesmo nome, ai na página novidades eu faço uma listagem de todos os artigos que possui a mesma tag.

    página novidades eu fiz o seguinte:

    <?php $pc = new WP_Query( 'tag=nomedaserie&orderby=ID&order=DESC&post_per_page=12' ); ?>

    Ou seja eu tenho que criar e editar a página novidade para cada série adicionada no blog, queria fazer isso dinâmico entendeu?

    Foi isso que eu pensei e consegui fazer, mais assim da muito trabalho, pra cada série cadastrada eu preciso criar 2 post.

    Se alguem tiver um solução ou uma dica pra mim eu agradeço.

    DouglasNickson, você pode fazer assim:

    Inclua essa função no seu functions.php (é uma função para pegar o slug da página corrente, por CatsWhoCode:

    function the_slug() {
        $post_data = get_post($post->ID, ARRAY_A);
        $slug = $post_data['post_name'];
        return $slug;
    }

    E na página que exibe as suas séries, crie um link assim:

    <a href="<?php bloginfo( 'home' ); ?>/minhastags/<?php echo the_slug() ?>">Novidades</a>

    Esse link pega a url do site + a base de tags, no caso do meu exemplo minhastags + o slug da página que está sendo exibida.

    Sendo assim, ao clicar no link novidades, o WordPress vai buscar a tag com o mesmo nome da série.

    Veja se ajuda e retorne por favor.

    Criador do tópico DouglasNickson

    (@douglasnickson)

    Então amigo, no caso o minhastags séria o nome da página que eu vou criar para receber correto? A página que vai receber as informações como vai ficar? posso usar o wp_query mesmo?

    Tipo as páginas da série não tem apenas uma tag tem várias, porem essa function pegou a primeira tag que e justamente o nome da serie, essa function pega sempre a primeira?

    Criador do tópico DouglasNickson

    (@douglasnickson)

    Outra coisa eu utilizo o nome do post no link, esse link que você postou não deu certo, no meu blog ta assim
    nomedosite.com/titulodopost

    esse link ficou do jeito que eu queria porem não redirecionou
    ficou assim
    nomedosite/novidades/nomedaseire

    ou seja ele pegou certinho como vc disse, e no caso novidades eu criei uma página com esse nome no lugar de minhastagas, porem ao clicar nesse link ele ignora a página novidades e vai para o post da serie padrão.

    DouglasNickson, por partes.
    Aquela função pega o nome da página, pois lá no começo entendi que a tag teria o mesmo nome da série.

    E sobre a página com o WP_Query, não seria necessário, pois imaginei que você usaria o próprio arquivo de tags. Por exemplo, quando vc clica na tag game of thrones, que arquivo php ele usa?

    Criador do tópico DouglasNickson

    (@douglasnickson)

    Sim exatamente, a tag tem o mesmo nome da série, mais existe mais de uma tag, por exemplo
    game of thrones, noticias game of thrones, fotos game of thrones etc..
    Mas mesmo assim a funcão deu certo e pegou a tag certinho.

    Sobre a página, no caso não da pra usar o arquivos de tags porque na página que vai listar o conteúdo tem o css e a formatação, segue abaixo todo o codigo do que eu fiz manual pra pegar o conteudo relacionado a serie..

    <?php $pc = new WP_Query( 'tag=nomedaserie&orderby=ID&order=DESC&post_per_page=12' ); ?>
    
    <?php while ($pc->have_posts()) : $pc->the_post(); ?>
    
    <div class="novidades-artigos">
    
    	<div id="novidades-thumb">
    		<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(array(242,242)); ?></a>
    	</div>
    
    	<div id="novidades-title">
    		<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    	</div>
    
    	<div id="novidades-genero">
    		<?php $excludedcats = array(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,98,38);
    			$count = 0;
    			$categories = get_the_category();
    			foreach($categories as $category) {
    				$count++;
    				if ( !in_array($category->cat_ID, $excludedcats) ) {
    					echo $category->name;
    					if( $count != count($categories) ){
    						echo ", ";
    					}
    				}
    			}?>
    	</div>
    
    	<div id="novidades-views-coments">
    		<?php echo the_views(); ?> - <?php comments_popup_link('0 Comentários', '1 Comentário', '% Comentários'); ?>
    	</div>
    
    </div>
    
    <?php endwhile; ?>

    Basicamente o que eu quero fazer e deixar isso dinâmico porque em toda série que eu cadastro eu tenho que criar um novo arquivo com esse código sacou?

    Criador do tópico DouglasNickson

    (@douglasnickson)

    Alguma sugestão?

    DouglasNickson, dá para continuar com seu código, já que não pode usar o tags.php.

    Com a função de pegar a categoria, salvando em uma variável e quando o usuário acessar a página “Novidades”, colocar um if {} para saber se há valor na variável e então rodar o WP_Query().

    Criador do tópico DouglasNickson

    (@douglasnickson)

    Não entendi bem a parte de salvar na variável, no caso ou crio uma variável na página principal da série ou na função?

    E como eu faço para passar o valor da variável? pela url?

    Criador do tópico DouglasNickson

    (@douglasnickson)

    Ignore a ultima mensagem amigo, consegui fazer aqui e deu quase tudo certo, apenas algumas coisas não apareceu como devia, mais isso eu arrumo aqui o ultimo problema pra finalizar e a url, para passar a variável eu fiz o seguinte:

    http://meusite.com/novidades/?serie=nomedaserie

    O problema é que utilizo url amigável e esse ?serie não fica nada legal, como e faço para passar a variável com url amigavel?

    Se eu colocar novidades/nomedaserie ele vai para a página de arquivos, e se eu colocar novidades/serie/nomedaserie ele não abre nada.

    Criador do tópico DouglasNickson

    (@douglasnickson)

    Na questão da URL estou tentando fazer pelo .htaccess fiz o seguinte criei a seguinte condição:

    RewriteRule ^UpSeries/novidades/serie/([^/]*)$ /UpSeries/novidades/?serie=$1 [L]

    A intenção era que ficasse mais o menos assim

    http://meusite/novidades/serie/nomedaserie

    Ou de preferência sem o ‘serie’ apenas novidades/nomedaserie mais se deixar sem o serie ele vai para a página de arquivos e se colocar o serie ele diz que a página não foi encontrada.

    segue todo meu .htaccess:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /MeuSite/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /MeuSite/index.php [L]
    RewriteRule ^MeuSite/novidades/serie/([^/]*)$ /MeuSite/novidades/?serie=$1 [L]
    </IfModule>
    # END WordPress

    Olá DouglasNickson.
    Já pensou em passar a variável por $_POST[]? Veja http://www.homehost.com.br/artigos/metodo_post_envio_de_dados_invisivel_em_php-035.html.

    Criador do tópico DouglasNickson

    (@douglasnickson)

    Sim, pensei nisso, mais no meu caso eu vou mandar via URL e não por um formulário….da pra usar o post em url?

    O $_POST ocultaria ele da URL, assim não atrapalharia suas URLs amigáveis.
    Conseguiu caminhar com isso?

    Avalia as soluções que coloquei no começo, faça um teste. Lembro que fiz uma proposta de algo que nem precisaria trocar a variável entre páginas.

Visualizando 15 respostas - 1 até 15 (de um total de 15)
  • O tópico ‘Criar uma página dinâmica’ está fechado para novas respostas.