• Resolvido Dhony

    (@dhony)


    Tenho uma página em site com quatro blocos de notícias.

    atualmente possui a seguinte sequência:

    ESPORTES | CULTURA | POLÍTICA | ENTRETENIMENTO

    Em cada bloco são chamadas as últimas 4 notícias postadas na categoria através do query_posts.

    Preciso de uma forma em que possamos, a qualquer momento, inverter a ordem dessas 4 categorias através de um widget ou plugin.

    Alguém pode me ajudar?

Visualizando 8 respostas - 1 até 8 (de um total de 8)
  • Opa,

    Crie uma pagina de opções e depois chame elas no seu template.

    De uma olhada: http://codex.wordpress.org/Writing_a_Plugin#WordPress_Options_Mechanism

    []’s
    Rafael Cirolini
    http://www.geniusdeveloper.com.br/

    Moderador Leo Baiano

    (@leobaiano)

    Parceiro, pensando rapidamente acredito que você pode resolver seu problema criando um widget para cada uma das categorias e transformando o local onde elas são exibidas em uma sidebar.

    Para criar o widget você pode fazer assim:

    <?php
    function categoriaA($args) {
    // Aqui vai o código que chama os posts da categoria A
    }
    function registra_widgets() {
    register_sidebar_widget(‘Categoria A’, ‘categoriaA’);
    }
    add_action(‘widgets_init’, ‘registra_widgets’);
    ?>

    Para transformar o lugar onde elas são exibidas em uma sidebar e assim poder incluir os widgets você cria um arquivo chamado sidebar-2.php e lá coloca:

    <?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(2) ) : ?>
    <?php echo “nenhum widget incluido”; ?>
    <?php endif; ?>

    No index, single, page e etc… você substitui o local onde exibia as 4 categorias por:

    <?php get_sidebar(2) ?>

    Criador do tópico Dhony

    (@dhony)

    rafael,

    Estou tentando criar a pagina de opções.

    leobaiano,

    Já faz um tempo que tento criar os widgets. A minha dificuldade é justamente na terceira linha do seu código: // Aqui vai o código que chama os posts da categoria A

    Ainda não aprendi a inserir nesse espaço o loop para chamar os posts de uma determinada categoria.

    Pode me ajudar nessa questão?

    Moderador Leo Baiano

    (@leobaiano)

    Dhony, quando você diz:

    Em cada bloco são chamadas as últimas 4 notícias postadas na categoria através do query_posts.

    Já tem esse query_post montado?

    Se não tem faz algo mais ou menos assim:

    //Define a categoria e a quantidade de posts
    //O número 1 é o ID da categoria e o 4 a quantidade de posts que serão exibidos
    query_posts('cat=1&posts_per_page=4');
    
    //inicia o loop
    if ( have_posts() ) : while ( have_posts() ) : the_post();
    
    // Aqui coloca as tags que exibem o post (the_content...)
    
    endwhile; else:
    
    echo "Não existem posts nesta categoria";
    
    endif;
    
    //Reset na Query
    wp_reset_query();

    O código acima deve ficar no lugar que eu disse pra você colocar o código que chama os posts.

    Moderador Leo Baiano

    (@leobaiano)

    Man, no meu código acima pode existir um erro no query_posts, se não funcionar mude para:

    query_posts('cat=1&showposts=4');

    Eu não sei bem se é com posts_per_page ou showposts (sei lá talvez até os dois) que define a quantidade de posts, testa ai e posta aqui o resultado.

    Pra fazer isso no widget é melhor criar novos objetos WP_Query do que ficar chamando o query_posts direto.

    Quando vc chama o query_posts você está sobrescrevendo a query original do WordPress, ou a última que você fez. Isso pode dar alguns resultados inesperados algumas horas.

    Para fazer uma nova query e um loop independente, faça assim:

    $leftPosts = new WP_Query(...opcoes...);
    
            if ($leftPosts->have_posts()) {
    
                while ($leftPosts->have_posts()) :
                    $leftPosts->the_post();
    	            the_title();
    	            ...
                endwhile;
            }

    Desse jeito você pode inclusive fazer todas as queries primeiro e depois intercalar elas no codifgo como quiser…

    abs

    Criador do tópico Dhony

    (@dhony)

    leogermani, ok muito obrigado.

    Não tinha atentado que ficar chamando o query_posts estaria sobrescrevendo a query original do WordPress. Vou estudar mais um pouco sobre isso.

    Ainda hoje vou aplicar a solução que você sugeriu.

    A idéia aqui, é produzir algo parecido com o que você fez no catracalivre.

    A aplicação está nesse vídeo: http://hacklab.com.br/2010/01/22/novo-catracalivre-no-ar/

    Moderador Leo Baiano

    (@leobaiano)

    Dhony, conseguiu resolver seu problema? Se sim seria uma boa marcar o tópico como resolvido.

Visualizando 8 respostas - 1 até 8 (de um total de 8)
  • O tópico ‘Query posts personalizado’ está fechado para novas respostas.