Loopje(s)
Ik ben hier nieuw, dus zal even kort iets over mezelf vertellen. Ik ben vroeger frontend developer geweest (CSS, HTML, WP,) en ben nu voor een eigen project bezig met het ontwikkelen van een website. Het is al even geleden! Qua programmeren kom ik er, na wat zoekwerk, eigenlijk vaak wel uit. Maar ik schrijf niet bepaald de meest nette code.
Nu ook 'loop' ik tegen iets aan wat volgens mij veel makkelijker moet kunnen. Ik gebruik namelijk telkens hetzelfde loopje. Zou iemand mij misschien willen uitleggen hoe ik het volgende gemakkelijker kan coderen?
Mochten jullie meer informatie nodig hebben dan hoor ik het graag!
Groetjes,
Nien
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<div class="css-slider-wrapper">
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<input type="radio" name="slider" class="slide-radio<?php echo $counter;?>" <? if($counter==1){ ?> checked <? } ?> id="slider_<?php echo $counter;?>">
<? endwhile;?>
<?php wp_reset_query();?>
<div class="slider-pagination">
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="page<?php echo $counter;?>"></label>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
<div class="next control">
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="numb<?php echo $counter;?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/js/slider/image/right.png"></label>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
<div class="previous control">
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="numb<?php echo $counter;?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/js/slider/image/left.png"></label>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<div class="slider slide<?php echo $counter;?>" style="background-image: url(<?the_post_thumbnail_url('');?>);">
<div>
<h2><? the_title();?></h2>
<a href="<?php the_field('link') ?>" class="button"><? the_field('tekst_button'); ?></a></div>
</div>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<input type="radio" name="slider" class="slide-radio<?php echo $counter;?>" <? if($counter==1){ ?> checked <? } ?> id="slider_<?php echo $counter;?>">
<? endwhile;?>
<?php wp_reset_query();?>
<div class="slider-pagination">
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="page<?php echo $counter;?>"></label>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
<div class="next control">
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="numb<?php echo $counter;?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/js/slider/image/right.png"></label>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
<div class="previous control">
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="numb<?php echo $counter;?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/js/slider/image/left.png"></label>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
<?php
$counter = 0;
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<div class="slider slide<?php echo $counter;?>" style="background-image: url(<?the_post_thumbnail_url('');?>);">
<div>
<h2><? the_title();?></h2>
<a href="<?php the_field('link') ?>" class="button"><? the_field('tekst_button'); ?></a></div>
</div>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
Gewijzigd op 17/05/2018 11:51:17 door Nien E
Maar als ik naar het bovenstaande kijk doe je binnen de loops toch wat uiteenlopende dingen (qua HTML weergeven). De vraag is of je al die varianten kunt vangen in functie-parameters.
Je zou er ook misschien voor kunnen kiezen (ik "spreek" niet echt WordPress) om die snippets HTML te verplaatsen naar een of meer aparte templates (als er zoiets is in WP) en het uitvoeren van de query en het ophalen van de resultaten en het uitdraaien van de HTML op grond van deze resultaten te scheiden. Maar dat resulteert in een dubbel aantal loops: een loop voor het ophalen van alle resultaten, die je vervolgens aan het template voert, maar daar heb je dus vervolgens weer een loop voor het weergeven van alle informatie.
Het lijkt mij in ieder geval geen zin hebben om dezelfde query (tenzij ik iets mis? de argumenten post_type en posts_per_page zijn elke keer hetzelfde?) meerdere keren uit te voeren. Je zou de resultaten hiervan op kunnen slaan in een array, en dan dit array raadplegen. Minder communicatie (en vooral als het overbodige betreft) met de database is altijd goed. Het scheiden van query en template is dan wel wat zinniger, je kunt dan gewoon het array voeren aan alle templates.
Wat ik dus op zijn minst zou doen is dezelfde queries (5) reduceren tot één query. Dan zou je nog kunnen overwegen om dit geheel in een functie te stoppen (die mogelijk op zijn beurt weer gebruik maakt van een template) ook al roep je deze maar 1x aan, daarin kun je dan wel je hele navigatie kwijt, waardoor je op het hoogste niveau in je code ((main)template?) enkel een aanroep van "slider_navigation()" of iets dergelijks ziet in plaats van de bovenstaande lap code.
Gewijzigd op 17/05/2018 12:10:40 door Thomas van den Heuvel
Toevoeging op 17/05/2018 12:41:21:
Ik heb in ieder geval voor nu de 5 queries tot 1 query gemaakt. Eigenlijk is er maar 1 loop (de laatste) die meer gegevens uit de query haalt. De eerste vier heb ik alleen nodig om de classes een getal mee te geven . De array en functies zijn op dit moment nog iets te complex voor mij, maar ik ben al heel blij met het volgende!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
?>
<div class="css-slider-wrapper">
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<input type="radio" name="slider" class="slide-radio<?php echo $counter;?>" <? if($counter==1){ ?> checked <? } ?> id="slider_<?php echo $counter;?>">
<? endwhile;?>
<div class="slider-pagination">
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="page<?php echo $counter;?>"></label>
<? endwhile;?>
</div>
<div class="next control">
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="numb<?php echo $counter;?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/js/slider/image/right.png"></label>
<? endwhile;?>
</div>
<div class="previous control">
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="numb<?php echo $counter;?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/js/slider/image/left.png"></label>
<? endwhile;?>
</div>
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<div class="slider slide<?php echo $counter;?>" style="background-image: url(<?the_post_thumbnail_url('');?>);">
<div>
<h2><? the_title();?></h2>
<a href="<?php the_field('link') ?>" class="button"><? the_field('tekst_button'); ?></a></div>
</div>
<? endwhile;?>
<?php wp_reset_query();?>
</div>
$args = array( 'post_type' => 'slider', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
?>
<div class="css-slider-wrapper">
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<input type="radio" name="slider" class="slide-radio<?php echo $counter;?>" <? if($counter==1){ ?> checked <? } ?> id="slider_<?php echo $counter;?>">
<? endwhile;?>
<div class="slider-pagination">
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="page<?php echo $counter;?>"></label>
<? endwhile;?>
</div>
<div class="next control">
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="numb<?php echo $counter;?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/js/slider/image/right.png"></label>
<? endwhile;?>
</div>
<div class="previous control">
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<label for="slider_<?php echo $counter;?>" class="numb<?php echo $counter;?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/js/slider/image/left.png"></label>
<? endwhile;?>
</div>
<?php
$counter = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$counter++;?>
<div class="slider slide<?php echo $counter;?>" style="background-image: url(<?the_post_thumbnail_url('');?>);">
<div>
<h2><? the_title();?></h2>
<a href="<?php the_field('link') ?>" class="button"><? the_field('tekst_button'); ?></a></div>
</div>
<? endwhile;?>
<?php wp_reset_query();?>
</div>