[PHP/WordPress] Dubbele foreach loop?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Asitis
  • Registratie: Augustus 2008
  • Laatst online: 28-08 13:11
Hey,
Ik ben een WordPress template aan het bouwen, waarbij ik meerdere loops oproep op een pagina. Dit zijn steeds rijen van 3 posts in elk een aparte div. Nu krijgen die elk vanuit WordPress wel een post-ID mee, maar ik kan niet bepalen wanneer een post de 3e in een rij is (zoiets als last-child).

Om dat wel te bepalen, heb je een foreach() loop nodig, zodat je kunt stellen 'dit is div1, div2 en div3'
Het probleem is echter dat WordPress al een foreach loop gebruikt om de posts te weergeven;

code:
1
<?php $posts = get_posts('numberposts=3'); foreach ($posts as $post) : start_wp(); ?>

Ik heb al gezocht naar een foreach met meerdere arrays, maar dat bestaat niet(?)
Mijn foreach loop erin of erbuiten zetten werkt vanzelfsprekend niet..

Het uiteindelijke doel is om van die 3 posts die opgeroepen worden, elke div daarvan een nummer (1 2 of 3) mee te geven in een class voor aparte styling. Wie weet hier meer van?

edit; dit is de foreach loop die ik nu heb voor de posts, waar ik dus (nog) niks aan heb;
code:
1
2
3
4
5
<?php 
$arr = array('post1', 'post2', 'post3');
foreach(array_keys($arr) as $key){ 
echo $arr[$key]; 
} ?>

[ Voor 10% gewijzigd door Asitis op 27-08-2010 21:08 ]


Acties:
  • 0 Henk 'm!

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Een $postCounter in de originele foreach bijhouden en $postCounter % $numberOfPostsPerRow == 0? Of heb ik je verhaal verkeerd begrepen?

[ Voor 9% gewijzigd door kluyze op 27-08-2010 21:35 . Reden: code meer dynamisch gemaakt ]


Acties:
  • 0 Henk 'm!

  • Asitis
  • Registratie: Augustus 2008
  • Laatst online: 28-08 13:11
Hehe, ik weet niet wat jij begrepen hebt, ik begrijp iig niet wat jij bedoeld ;)

Simpel gezegd; ik heb 3 divjes, die wil ik elk een aparte class geven. Die divjes worden in een foreach loop opgeroepen.
Mijn beunhaas oplossing zou zijn; niet 3 divjes oproepen, maar telkens 1 en dan handmatig een waarde meegeven.. Maar dat is niet netjes..

edit: ter verduidelijking;
Dit is de code zoals het nu staat;
code:
1
2
3
4
5
<?php $posts = get_posts('numberposts=3'); foreach ($posts as $post) : start_wp(); ?>
      <div class="post">
           ....
      </div>
<?php endforeach; ?>

dat divje wordt dus 3x opgeroepen (numberposts=3), en ik wil elk van die drie, eigenlijk alleen de laatste (ivm margin-right, jekenthetwel) een eigen class meegeven, maar hoe??

[ Voor 38% gewijzigd door Asitis op 27-08-2010 22:00 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dan is een tellertje bijhouden en classes op basis van modulo 3 een prima oplossing, dus succes ;)

{signature}


Acties:
  • 0 Henk 'm!

  • kaesve
  • Registratie: Maart 2009
  • Laatst online: 16-05 03:04
waarom niet een counter bijhouden en vergelijken met bijv. count($posts) - 1;
of de foreach ook de keys mee laten geven (foreach($posts as $key =>$post)) en dan kijken of het de laatste in de array is. die kun je bijvoorbeeld vinden met end($posts); $last_key = key($posts);

geen rocketscience, of ik begrijp je verkeerd

Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Ik zou gewoon een extra teller laten mee lopen in de foreach. Zodra die teller op 4 komt, maak je hem weer 1.

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • Asitis
  • Registratie: Augustus 2008
  • Laatst online: 28-08 13:11
Ehh, oke :P een teller dus. Ik ben hier aardig nieuw in, en ik probeer het een keer te snappen in plaats van alles op de 'makkelijke' manier te doen... Ik denk aan zoiets (het klopt/werkt zo vast niet :') );
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
     
<?php 
$postcount = 0 
$posts = get_posts('numberposts=3'); foreach ($posts as $post) : start_wp(); ?>

<div class='<?php echo $postcount; ?>'>
[..content..]
</div>

<?php 
$postcount ++; 
endforeach; 
?>

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:27

Creepy

Tactical Espionage Splatterer

Denk gewoon eens rustig nu, en begin vanaf 0. Je haalt alle posts op die je wilt, en dan start je 1 foreach om ze allemaal te tonen. Je laat in de loop een teller meelopen, en als die 3 heeft bereik zul je iets moeten gaan doen om je rij van drie divs af te sluiten. Vaak helpt het door eerst eens rustig op te schrijven in normale taal wat je nu wilt bereiken i.p.v. direct te denken "hier een foreach, daar een counter++".

Dat is toch wel in code om te zetten voor je?

[ Voor 20% gewijzigd door Creepy op 28-08-2010 10:38 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1