Usando Masonry - Como fazer com que cada imagem em miniatura da X-ésima postagem abranja várias colunas?
-
28-09-2020 - |
Pergunta
Para ser específico:
- Estou usando o Masonry para mostrar todas as postagens de uma determinada categoria
- As imagens em miniatura de cada postagem são mostradas na página da categoria em um formato de 3 colunas usando colunas CSS de largura fluida
- Preciso mostrar a 7ª imagem em miniatura abrangendo a largura de todas as 3 colunas
No passado, adicionei um contador às postagens para direcionar a Xª postagem para aplicar uma classe e um estilo adequados.Mas isso é possível com a Maçonaria, que é absolutamente elementos de posicionamento?
EDITAR
Estou usando este código para consultar postagens na página de alvenaria:
if ( get_query_var( 'paged' ) ) {
$paged = get_query_var( 'paged' );
} elseif ( get_query_var( 'page' ) ) {
$paged = get_query_var( 'page' );
} else {
$paged = 1;
}
$args = array(
'posts_per_page' => 12,
'paged' => $paged
);
// Override the primary post loop
query_posts( $args );
Solução 2
Então, não consegui descobrir como adicionar uma classe de sequência numérica a cada div de postagem/artigo, mas apenas alterei o modelo para a 7ª postagem no modelo de alvenaria.
Eu fiz assim:
<?php if ( have_posts() ) : ?>
<?php /* Start the Loop */ ?>
<?php while (have_posts()) : the_post(); ?>
<?php $count++; ?>
<?php if ($count == 7) : ?>
<article class="masonry-entry masonry-3col masonry-post-no-7">
</article>
<?php else: ?>
<article class="masonry-entry masonry-3col">
</article>
<?php endif; ?>
<?php endwhile; ?>
Outras dicas
Isso não deveria ser um problema com a Maçonaria, pelo menos nunca tive uma com ela (ou seu equivalente semelhante, Isótopo).Na verdade é a beleza dessas bibliotecas que você consegue ter esse tipo de layout.O resto se resume aos estilos CSS corretos.Não sei como você aplica sua classe de contador/índice, mas faria como mostrado abaixo:
function wpse151589_indexed_post_class( $classes ) {
global $wp_query;
// the current_post property value starts counting at 0
// we are doing + 1 to start from 1
$index = $wp_query->current_post + 1;
// if you want the number to always have 3 digits
// like 001, uncomment the next line
//$index = sprintf( '%1$03d', $index );
// results in classes like post-nr-1/001
$classes[] = 'post-nr-' . $index;
return $classes;
}
add_filter( 'post_class', 'wpse151589_indexed_post_class' );
Editar: Responder ao comentário
Há algumas coisas que gosto de observar,
Fazer não usar
query_posts()
Há uma razão pela qual até mesmo a página do códice correspondente afirma:
Esta função não deve ser usada por plugins ou temas.Conforme explicado posteriormente, existem opções melhores e com melhor desempenho para alterar a consulta principal.
E mais tarde:
Para consultas gerais de postagem, use
WP_Query
ouget_posts
.E:
Isso é fortemente recomendado que você use o
pre_get_posts
filter em vez disso e altere a consulta principal verificandois_main_query
As duas fontes mais informativas e destacadas para o por que estão localizados aqui no WordPress Development, vale a pena ler:
Que
post_class()
não pode ser usado fora o laço é não verdadeiroExiste até um seção sobre isso na documentação.Concedeu a página do códice para
post_class
não é o melhor que existe, mas é claro que a função tem dois parâmetros, são eles:$classes
e$post_id
.post_class( $classes, $post_id );
Que significa:
Para exibir postagens fora do Loop ou em um Loop alternativo, o segundo parâmetro da função post_class pode ser o ID da postagem.As aulas serão então determinadas a partir desse posto.
Isto - além das informações de 1.- torna muito possível usar isso para seu propósito.
O
WP_Query
objeto tem uma propriedade chamada$current_post
$ postagem_atual
(disponível durante O laço) Índice da postagem que está sendo exibida atualmente.Ele pode ser usado para o seu propósito, portanto não há necessidade de reinventar a roda.