Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Como customizar para cada reload da página aparecesse um banner diferente?

Boa tarde a todos

Onde tem a opção no código abaixo 'posts_per_page' => 1

function pegandoTextosParaBanner()
{

    $args = array(
        'post_type' => 'banners',
        'post_status' => 'publish',
        'posts_per_page' => 1
    );

    $query = new WP_Query($args);
    if ($query->have_posts()):
        while ($query->have_posts()): $query->the_post();
            $texto1 = get_post_meta(get_the_ID(), '_texto_home_1', true);
            $texto2 = get_post_meta(get_the_ID(), '_texto_home_2', true);
            return array(
                'texto_1' => $texto1,
                'texto_2' => $texto2
            );
        endwhile;
    endif;
}

Existe uma função pelo WordPress que fosse possível customizar para aparecer a cada reload da página um banner diferente?

Desde já grato Fabricio

3 respostas

Olá Fabrício, tudo bem?

Existem algumas alternativas que poderíamos utilizar, uma delas seria retornar os banners existentes, removendo a opção 'posts_per_page', onde por padrão o Wordpress irá trazer 10 posts por página.

Nós utilizaríamos um desses banners e guardaríamos o ID na sessão. Ao detectar o recarregamento da página, poderíamos buscar um ID de post diferente do que temos na sessão e mostraríamos esse novo banner.

Abs

Professor, obrigado pelas respostas. A parte de entender retirando o posts_per_page entendi.

Guardar o ID na sessão, não entendi de maneira prática. Poderia passar um exemplo, por gentileza?

Desde já lhe agradeço.

solução!

Olá Fabricio, tudo bem?

Poderíamos tentar algo parecido com o abaixo:

<?php
$estiloPagina = 'home.css';
require_once 'header.php';

if (empty($_SESSION['banner_id'])){
    start_session();
}

$args = array(
    'post_type' => 'banners',
    'post_status' => 'publish',
    'posts_per_page' => 10
);

$query = new WP_Query($args);
if($query->have_posts()):
    while($query->have_posts()): $query->the_post();
            if(!empty($_SESSION['banner_id']) && get_the_ID() != $_SESSION['banner_id']):
                continue;
            else:
            ?>
            <main>
                <div class="imagem-banner">
                    <?php the_post_thumbnail(); ?>
                </div>
                <div class="texto-banner-dinamico">
                    <span id="texto-banner"></span>
                </div>
            </main>
            <?php
                $_SESSION['banner_id'] = get_the_ID();
                break;
            endif;
            endwhile;
endif;
require_once 'footer.php';

No caso, se a sessão tiver o id do banner que está na iteração do bloco do while, nós continuamos a iteração (condição if com continue). Quando encontrarmos um id que não esteja na variável banner_id, nós mostraremos o conteúdo.

Abs

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software