Como retornar apenas uma instância de cada um, de todo o loop

Eu estou adicionando uma function de filtro em um modelo de arquivo de taxonomia.

A intenção é adicionar URLs para filtragem em uma barra lateral e eu quero que ele retorne um conjunto de ACFs como CEP, etc … (o postnr neste exemplo é o mesmo que o CEP)

O primeiro “problema” é que até agora ele retorna a saída solicitada, mas uma vez para cada postagem como essa

  • 7011 Trondheim
  • 7048 Trondheim
  • 7022 Trondheim
  • 7011 Trondheim
  • 7011 Trondheim
  • 7048 Trondheim
  • 7022 Trondheim

Tudo bem, mas eu quero que ele retorne cada opção apenas uma vez. (para um tempero extra, podemos ter uma contagem por trás de cada um como este: mas não nessesarry.

  • 7011 Trondheim (3)
  • 7048 Trondheim (2)
  • 7022 Trondheim (2)

O segundo problema é que ele só levará em consideração a publicação no loop que cai entre a paginação “fronteiras”

Como podemos conseguir isso para concider TODOS os posts dentro da taxonomia atual?

 

Filter etter postnr:

  • <a href="https://wordpress.stackexchange.com/?postnr="> -

Solutions Collecting From Web of "Como retornar apenas uma instância de cada um, de todo o loop"

Você precisará de um loop antes de chegar ao seu loop de barra lateral para iniciar seus valores exclusivos. Você pode executar o mesmo loop duas vezes, com rewind_posts() entre os dois loops (para que você obtenha seu loop original, começando pelo índice 0).

No seu primeiro loop, faça um loop e adicione todos os seus valores a uma matriz para que a matriz seja algo assim:

 Array( [0] => '7011 Trondheim', [1] => '7048 Trondheim', [2] => '7022 Trondheim', [3] => '7011 Trondheim', [4] => '7011 Trondheim', [5] => '7048 Trondheim', [6] => '7022 Trondheim' ) 

Observe que terá valores duplicados, o que é bom para este caso. Em seguida, vamos contar nossos valores usando a function PHP array_count_values() que nos dará os resultados:

 Array ( [7011 Trondheim] => 3 [7048 Trondheim] => 2 [7022 Trondheim] => 2 ) 

Agora, temos uma matriz única que também tem uma contagem de duplicatas!

NOTA

Eu não estou familiarizado com a ACF, mas eu imagino que poderíamos fazer algo assim para conseguir o que estamos tentando fazer – também não testado:

 < ?php $addresses = array(); if( have_posts() ) { while( have_posts() ){ the_post(); $city = get_field( 'poststed' ); $zip = get_field( 'postnummer' ); if( ! empty( $city ) && ! empty( $zip ) ) $address[] = "{$zip} - {$city}"; } } if( ! empty( $addresses ) ) { $uniqueAddresses = array_count_values( $addresses ); } rewind_posts(); // Incase needed later. if( ! empty( $uniqueAddresses ) ) : ?> 

Filter etter postnr:

    < ?php foreach( $uniqueAddresses as $address => $count ) : // Let's loop through our array // Let's split our unique address back in to `poststed` and `postnummer` // $addressArr[0] => postnummer // $addressArr[1] => poststed $addressArr = explode( ' - ', $address ); ?>
  • < ?php echo "{$address}({$count})"; ?>
  • < ?php endforeach; ?>
< ?php endif; ?>