- Home
- Categorie
- Coding e Sistemistica
- CMS & Piattaforme Self-Hosted
- HOME con "Gli ultimi articoli" e testo personalizzato
-
HOME con "Gli ultimi articoli" e testo personalizzato
Buongiorno a tutti,
forse il titolo non è molto chiaro, mi spiego meglio: vorrei impostare la home del mio sito visualizzando gli ultimi articoli di tutto le categorie, ma sopra di questi vorrei inserire un testo introduttivo.Così ho seguito i seguenti STEP:
- Creato una pagina 'HOME'
- Impostato il template di questa come BLOG
- Inserito il testo da me desiderato
- Aspetto > TEMI > Personalizza > su "Pagina iniziale" ho impostato la mia pagine 'HOME'.
Oppure:
- Creato una pagina 'HOME' con template STANDARD ed inserito il testo da me desiderato
- Creato una pagina 'HOME - BLOG' con template di tipo BLOG
- Aspetto > TEMI > Personalizza > su "Pagina iniziale" ho impostato la mia pagine 'HOME' mentre su "Pagina articoli" ho impostato la pagina "BLOG"
In entrambi i casi non ho ottenuto l'effetto desiderato!
Sto utilizzando questo theme nella versione free...
Come potrei risolvere?
Grazie.
-
Ciao Felino,
il problema dei template di pagina è il loro ciclo ( loop per Wordpress ) che hanno al loro interno che comunque risponderà sempre al post_type 'page'.
Premetto che conosci come personalizzare i template di pagina.
Per ovviare a tale problema prendi una copia del template page.php e subito dopo il normale ciclo della pagina, ne crei uno tuo personalizzato utilizzando l'oggetto WP_Query() in questo modo:[PHP]
<?php
// ipotesi per 4 post
$args = array(
'posts_per_page' => '4',);
// The Query
$the_query = new WP_Query( $args );// The Loop
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php if( has_post_thumbnail() ) : ?>
<a rel="nofollow" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php the_title(); ?>
</a>
<?php endif;
endwhile;
else :
// no posts found
endif;
/* Restore original Post Data */
wp_reset_postdata();
?>
[/PHP]
Successivamente ti creerai una pagina home, selezionando il template appena creato ed andando in impostazioni -> lettura imposterai una pagina statica come home page.
Spero chi sia stato chiaro
-
Ciao Stefano,
certo, gentile e disponibile come sempre!Questa sera lo provo e ti aggiorno!
-
Stefano,
grazie al tuo consiglio: operazione riuscita....alla fine ho creato un nuovo template e ho eseguito un'unione tra il template page presente e il template blog presente, entrambi del mio theme.
-
Alla fine hai risolto come sempre. Good!
-
Ciao, mi permetto di inserirmi in questa discussione in quanto sembra molto attinente al mio problema. Premetto inoltre che il problema si è presentatao dopo l'aggiornamento a wp4.1... prima, col 3.8.5, tutto era ok.
Dunque, il sito è handballestense(punto)com.
ho impostato una landing page statica in cui avevo inserito il seguente codice:<?php $my_query = new WP_Query('showposts=1'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?><?php the_content();?>
<?php endwhile;?>che funzionava benissimo e mi dava in home page e per intero, l'ultimo articolo pubblicato...
Ora non va piu en non capisco il perchè... potresti aiutarmi per cortesia?grazie
Andrea
-
Prova a sostituire showposts con post_per_page facendo in questo modo:
$args = array( 'post_type' => 'post', 'posts_per_page' => '1' );
$my_query = new WP_Query( $args );Se ancora non funziona, cerca disattivando un plugin alla volta, perchè la formula è corretta!
-
Ciao, scusami... intendi di sostituire integralmente le mie quattro righe di codice con le tue due?
-
Pensavo di esser stato chiaro, forse hai frainteso.
Quello che devi fare è eliminare la clausola showposts perchè per certi versi è sbagliata con l'utilizzo dell'oggetto WP_Query ( come riportato nella documentazione ufficiale ) ed incrementare la tua variabile dell'oggetto WP_Query() passandogli dati corretti e specifici, come ti mostro di seguito
[PHP]
<?php
$args = array(
'posts_per_page' => '1',
'post_type' => 'post'
);
// The Query
$the_query = new WP_Query( $args );// The Loop
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php endwhile;
else :
// no posts found
endif;
/* Restore original Post Data */
wp_reset_postdata();
?>
[/PHP]