Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Randomizen van wordpress posts

Pagina: 1
Acties:

  • chokolademan2
  • Registratie: April 2009
  • Laatst online: 13-09-2024
Hallo ik probeer mijn posts te randomizen in wordpress, nu lukt me dat wel altijd met een of andere code. Maar bij deze index.php functioneert ie niet. Waarom weet ik niet precies.....

Dit is de index.php:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php get_header(); ?>
            <?php get_sidebar('top'); ?>
            <?php
            if (have_posts()) {
                /* Display navigation to next/previous pages when applicable */
                if (theme_get_option('theme_' . (theme_is_home() ? 'home_' : '') . 'top_posts_navigation')) {
                    theme_page_navigation();
                }
                /* Start the Loop */
                while (have_posts()) {
                    the_post();
                    get_template_part('content', get_post_format());
                }
                /* Display navigation to next/previous pages when applicable */
                if (theme_get_option('theme_bottom_posts_navigation')) {
                    theme_page_navigation();
                }
            } else {
                theme_404_content();
            }
            ?>
            <?php get_sidebar('bottom'); ?>
<?php get_footer(); ?>


Wat ik er bij wil voegen, maar wat nu dus niet werkt is:

code:
1
query_posts('orderby=rand');


Hoe kan ik deze goed erinvoegen? Many thanks!!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 21:46
PHP:
1
2
3
4
 while (have_posts()) {
                    the_post();
                    get_template_part('content', get_post_format());
                }

Kijk ff wat the_post() doet, gooi daar de randomizer in. (offtopic; Het is echt niet nodig om consequent <?php ?> te doen, misschien nog meer offtopic, maar voeg ff code=php toe, maakt het wat beter leesbaar. )

[ Voor 12% gewijzigd door Biersteker op 15-02-2014 21:09 ]

Originally, a hacker was someone who makes furniture with an axe.


  • chokolademan2
  • Registratie: April 2009
  • Laatst online: 13-09-2024
Ik heb het nu zo ingevoegd, na het stukje 'the_post', bedoelde je het zo? (ben zelf niet zo een code kenner)

code:
1
2
3
4
                while (have_posts()) {
                    the_post();
                    query_posts('orderby=rand');
                    get_template_part('content', get_post_format());


Maar hij pakt hem nog niet...

Over de <?php>
Een programmaatje heeft stukjes code gegenereerd, waardoor ie er meer bijvoegd dan nodig is denk ik :) Daar heeft het misschien ook mee te maken waardoor ie t niet doet.

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 01-11 21:54
Als ik een blik op je code werp (en het is een tijd geleden dat ik me bemoeit heb met WP code), dan moet query_posts sowieso vóór have_posts (dat lijkt mij heel erg logisch: hoe kan je de controle verdedigen of er posts zijn gevonden voordat je de query doet?)

In de codex vind je meer informatie over het loopen door je query resultaten op de pagina "the loop". Je ziet daar ook onder de kop "Exclude Posts From Some Category" dat de query_posts wordt uitgevoerd vóór de while-loop!

Mocht je code technisch goed in elkaar steken: blijkbaar zijn er meerdere 'dingen' die deze functionaliteit beïnvloeden (lees: uitschakelt). Als je even googlet kom je al een aantal voorbeelden tegen (inclusief net even andere formuleringen van de code tegen om random posts te queryen).
Twee dingen die al heel snel naar voren komen via google (maar misschien al zijn verouderd):
• De host wpengine.com schakelt blijkbaar de random zoek functie uit.
• Een plugin "Post Types Order" voorkomt blijkbaar ook dat je op random posts kunt zoeken.

Afhankelijk waar je je code uitvoert kan het ook noodzakelijk zijn dat je rekening moet houden met de originele/hoofd query (wordt ook aandacht aan besteed op de gelinkte codex-pagina, voor meer zie deze pagina).

In theorie zou het dus voldoende moeten zijn voor jouw index.php om vóór de have_posts de code query_posts( 'orderby=rand' ); te plaatsen als dit de main loop is.

  • chokolademan2
  • Registratie: April 2009
  • Laatst online: 13-09-2024
Ha bedankt voor de links en uitleg. Een hoop plugins heb ik uitgeschakeld om beinvloeding door hen uit te kunnen sluiten. Er zat er eentje bij welke ook de volgorde van posts kan bepalen.

Plus de code heb ik verplaatst naar boven de regel van 'have_posts'.
Maar helaas deed ie het nog steeds niet....

Bedoel je met 'main loop' dat er buiten deze nog een Loop kan bestaan?

Ik had nog verder doorgespit en zag dat er in 'functions.php' ook dergelijke regels code staan:

code:
1
2
3
4
    while ($wp_query->have_posts()) {
        the_post();
        $post_id = theme_get_the_ID();
        $res .= get_post_meta($post_id, 'theme_head', true);


Ok terwijl ik deze post type is het gelukt ! :)

In functions.php heb ik de query_posts('orderby=rand'); code gebruikt inplaats van index.php waar het meestal wordt aangeraden om het te plaatsen.

Thanks voor jullie hulp!