Vise random post på førstesiden i Wordpress

sKrud

Meget sliten student
Som titelen sier; Hvordan viser man en random post på første siden i WP? Har kun en post på første side, hvordan får jeg WP til å rotere alle poster automatisk på førstesiden?

Forsøkte meg på et lite googlesøk på det, uten at jeg ble noe smartere..
 

Mr Vest

Sjefen over alle sjefer!
Wordpress Codex

Fra Wordpress Codex skrev:
HTML:
<ul><li><h2>A random selection of my writing</h2>
    <ul>
 <?php
 $rand_posts = get_posts('numberposts=5&orderby=rand');
 foreach( $rand_posts as $post ) :
 ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endforeach; ?>
    </ul>
 </li></ul>

Hvorvidt dette funker aner jeg ikke, men har en opplevelse at at det meste av informasjon inne på Wordpress Codex stort sett fungerer.

Det du gjør er altså og legge denne biten inn i din lille index.php fil, og gjerne erstatten den med "loopen" du allerede har som henter ut siste bloggpost. Hvordan du kan gjøre det vil jeg ikke svare på uten og se index.php filen din.

Denne koden over henter ut kun tittel på en random bloggpost. Du kan hente ut excerpt og andre greier på vanlig måte, som med <?php the_excerpt(); ?> , evt <?php the_content(); ?> og også custom fields. Et eksempel på denne kodesnutten mens den henter ut tittel, hele bloggposten, tidspunkt den ble publisert og kommentarer:


HTML:
<ul><li><h2>A random selection of my writing</h2>
    <ul>
 <?php
 $rand_posts = get_posts('numberposts=5&orderby=rand');
 foreach( $rand_posts as $post ) :
 ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <br />
<?php the_content(); ?> <br /><br />

<?php the_time(get_option("date_format")); ?> | <?php comments_popup_link(__('Comments (0)'), __('Comments (1)'), __('Comments (%)')); ?>



</li>
 <?php endforeach; ?>
    </ul>
 </li></ul>

Skal fungere så vidt jeg vet, selv om det gjerne finnes noen litt enklere måter. Fikk opp et innstikk i Google på dette jeg. Har du prøvd noe slikt?

- Og ja, 5-tallet inne i den kodegreia er altså antall poster som skal komme frem.
 

sKrud

Meget sliten student
hehe..Skjønte lite av det der..setter bort alt av koding til andre såe..Dette er mesteparten av mine index fil:

PHP:
<?php include (TEMPLATEPATH . "/header.php"); ?>
	<?php if (have_posts()) : ?>
	

		<?php while (have_posts()) : the_post();  ?>
            
			<div class="single" >
				<?php include (TEMPLATEPATH . "/posts.php"); ?>
			</div>
		<?php endwhile; ?>

Forsøkte meg litt men det funket dårlig..lyst å hjelpe til?
 

Mr Vest

Sjefen over alle sjefer!
Æsj altså, vil du komme med posts.php også? Tenker det kan være greit for og gi deg en kode som blir akkurat slik du vil ha den.
 

sKrud

Meget sliten student
PHP:
<h1><?php the_content('Contnue Reading'); ?> </h1>
<?php edit_post_link('Edit', '<span>', '</span>'); ?>
<?php if(function_exists('the_ratings')) { the_ratings(); } ?>
<div><input class="directlink" name="ll" value="Direct link :  <?php echo get_option('home'); ?>/?p=<?php the_ID(); ?>"> </div>

Takker for hjelpen på forhånd!
 

Mr Vest

Sjefen over alle sjefer!
Tonny kom også med en flott løsning der. Jeg fikk også min til og fungere, men må si jeg syns Tonny sin var mye ryddigere. :)

Det du kan gjøre for og vise en random post på forsiden av bloggen din, istedenfor den siste posten er at du bytter du følgende i index.php:

PHP:
<?php include (TEMPLATEPATH . "/header.php"); ?>
    <?php if (have_posts()) : ?>
    

        <?php while (have_posts()) : the_post();  ?>
            
            <div class="single" >
                <?php include (TEMPLATEPATH . "/posts.php"); ?>
            </div>
        <?php endwhile; ?>

med følgende:

PHP:
<?php include (TEMPLATEPATH . "/header.php"); ?>
<?php query_posts(array('orderby' => 'rand', 'showposts' => 1));
if (have_posts()) :
while (have_posts()) : the_post();
?>
	<div class="single" >
<h1><?php the_content('Contnue Reading'); ?></h1>
<?php edit_post_link('Edit', '<span>', '</span>'); ?>
<?php if(function_exists('the_ratings')) { the_ratings(); } ?>
<div><input class="directlink" name="ll" value="Direct link :  <?php echo get_option('home'); ?>/?p=<?php the_ID(); ?>"> </div>
	</div>
<?php endwhile; endif; ?>

===
Det som da skjer er at den ene posten du nå har på fremsiden vil være en random post i bloggen, og slik jeg ser det så vil posten som blir vist se ut akkurat slik som posten du har der per i dag.

Dersom ikke posts.php er i bruk også andre steder på bloggen (i andre filer) vil det jo også gå greit at du ikke lenger har denne filen liggende. Den er ikke nødvendig for og vise poster på fremsiden lenger hvertfall.

Fint om du sier ifra hvordan det funker for deg.!

- Kudos til Tonny for slik en flott og ryddig måte og fikse dette på. :)
 

Mr Vest

Sjefen over alle sjefer!
Snodig. Da begynner jeg og lure på om det kan være at du bruker en gammel php versjon?

Jeg prøvde nemlig denne koden før jeg gav den til deg, og den fungerer utmerket her hos meg med php5..
 

Mr Vest

Sjefen over alle sjefer!
Siste versjon her hos meg også... Var jo veldig rart altså.. Da må jeg si jeg ikke helt forstår hva som kan ha skjedd.

Du kan gjerne sende meg en PM, så kan jeg ta en liten titt på det for deg. Det er desverre det eneste jeg kan si.. :)
 
Topp