• Super User

    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:

    1. Creato una pagina 'HOME'
    2. Impostato il template di questa come BLOG
    3. Inserito il testo da me desiderato
    4. Aspetto > TEMI > Personalizza > su "Pagina iniziale" ho impostato la mia pagine 'HOME'.

    Oppure:

    1. Creato una pagina 'HOME' con template STANDARD ed inserito il testo da me desiderato
    2. Creato una pagina 'HOME - BLOG' con template di tipo BLOG
    3. 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.


  • Moderatore

    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 🙂


  • Super User

    Ciao Stefano,
    certo, gentile e disponibile come sempre! 😉

    Questa sera lo provo e ti aggiorno!


  • Super User

    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.


  • Moderatore

    Alla fine hai risolto come sempre. 😄 Good!


  • User Newbie

    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


  • Moderatore

    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!


  • User Newbie

    Ciao, scusami... intendi di sostituire integralmente le mie quattro righe di codice con le tue due?


  • Moderatore

    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]