, 27/12/2011 10:02
Sarà capitato anche a voi (di avere una musica in testa...)...no, di avere un problema del genere: dover mostrare anteprima immagine, riassunto e titolo delle sottopagine di una pagina madre, all'interno della stessa. Esistono diverse soluzioni in giro per mostrare la semplice lista di pagine "child" tramite widget, shortcode o la semplice funzione di Wordpress list_subpages();. Nessuna però è completa di queste funzionalità, in realtà molto richieste. Settimana scorsa insieme a Roberto Scano abbiamo messo a punto il seguente codice prendendo qua e là dalla rete (e ci scusiamo se non abbiamo più i credits originali dei vari pezzi). Ecco a voi la soluzione pronta al consumo, da inserire dove desiderate far comparire la lista all'interno della pagina del vostro template chiamata page.php:
<ul>
<!--inizio modifica scano -->
<?php
//questa serve per l'excerpt ed è possibile spostarla in functions.php
function nicetrim ($input, $length) {
$input = strip_shortcodes($input);
//no need to trim, already shorter than trim length
if (strlen($input) <= $length) {
return $input;
}
//find last space within length
$last_space = strrpos(substr($input, 0, $length), ' ');
$trimmed_text = substr($input, 0, $last_space);
$trimmed_text .= '...';
return $trimmed_text;
}
//fine funzione
$child_pages = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = ".$post->ID." AND post_type = 'page' AND post_status='publish' ORDER BY menu_order", 'OBJECT'); ?>
<?php if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild ); ?>
<li>
<span class="pic"><a href="<?php echo get_permalink($pageChild->ID); ?>" rel="bookmark"><?php echo get_the_post_thumbnail($pageChild->ID,array(100,100));?></a></span>
<h3><a href="<?php echo get_permalink($pageChild->ID); ?>" rel="bookmark"><?php echo $pageChild->post_title; ?></a></h3>
<?php echo nicetrim(strip_tags($pageChild->post_content), 350);?>
</li>
<?php
endforeach;
endif; ?>
<!--fine modifica scano -->
</ul>
