Post recenti su una pagina home statica
Voglio una pagina home statica sul mio sito WordPress, l'ho già configurata e ho inserito un po' di contenuti, il prossimo passo è avere 5 post recenti sotto il contenuto. Come pagina normale non è un problema, ma non appena imposto la pagina come home statica, i post scompaiono.
Dopo ore di ricerca, sono consapevole che ho bisogno di 'loop multipli' nel mio template, ho trovato alcuni esempi e ho cercato di implementarli nel mio template senza successo. Penso di avere più o meno il codice per mostrare i post recenti, ma credo di avere problemi con il markup e i template tag per mostrare effettivamente i post.
Spero che non sia troppo complicato da capire, e apprezzo davvero qualsiasi aiuto, sono su questo problema da 2 giorni senza alcun progresso. Posso fornire qualsiasi codice necessario dai template o altro.
Il mio sito web - www.completemuscleandfitness.com
Ok, questo è quello che ho finora
<?php
// Argomenti per recuperare i 5 post più recenti
$args = array( 'numberposts' => '5' );
$recent_posts = wp_get_recent_posts( $args );
// Ciclo attraverso i post recenti
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Guarda '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> ';
}
che mostra questo - www.completemuscleandfitness.com
Come posso farlo apparire bello come le altre pagine dei post?

Prima di tutto, benvenuto!
Suppongo che tu stia utilizzando il file front-page.php
per visualizzare la tua homepage.
Quello che devi fare è aggiungere il seguente codice nel tuo file front-page.php
:
<h2>Post Recenti</h2>
<ul>
<?php
$args = array( 'numberposts' => '5' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Visualizza '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> ';
}
?>
</ul>
Ulteriori informazioni su wp_get_recent_posts()
sono disponibili qui.
Il tuo file template dovrebbe apparire simile al seguente:
<div id="main">
<div class="new_post">
...
</div>
</div>
Potresti provare a inserire questo codice all'interno di <div id="main">
appena prima del tag di chiusura </div>
:
<div id="main">
<div class="new_post">
...
</div>
<h2>Post Recenti</h2>
<ul>
<?php
$args = array( 'numberposts' => '5' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Visualizza '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> ';
}
?>
</ul>
</div>

Grazie per la risposta! Dato che ho una pagina home statica, al momento uso un template chiamato page-home-2.php. Posso inserire il codice lì dentro? La parte difficile per me è capire dove inserire il codice nel template?

Puoi aggiungere il codice in page-home-2.php
. Modificherò la mia risposta aggiungendo una breve descrizione su dove posizionare questo codice.

Puoi creare il tuo template personalizzato per la homepage nello stesso modo di index.php
nella directory del tuo tema attivo.
All'interno di quel file puoi creare una tua query personalizzata e iterare attraverso i risultati.
Esempio:
<h2>Post Recenti</h2>
<ul>
<?php
$query = new WP_Query( array ( 'orderby' => 'date', 'order' => 'DESC' ) );
while ( $query->have_posts() ) :
$query->the_post();
echo '<li>' . get_the_title() . '</li>';
endwhile;
?>
</ul>
Questo puoi considerarlo come un'implementazione di esempio. Puoi svilupparlo ulteriormente secondo le tue necessità.
Esempio:
<?php
// La Query
$the_query = new WP_Query( $args );
// Il Loop
while ( $the_query->have_posts() ) :
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
endwhile;
/* Ripristina i dati originali del Post
* NB: Poiché stiamo usando new WP_Query non stiamo sovrascrivendo
* l'originale $wp_query e non è necessario resettarlo.
*/
wp_reset_postdata();
/* La 2a Query (senza variabile globale) */
$query2 = new WP_Query( $args2 );
// Il 2° Loop
while( $query2->have_posts() ):
$query2->next_post();
echo '<li>' . get_the_title( $query2->post->ID ) . '</li>';
endwhile;
// Ripristina i dati originali del Post
wp_reset_postdata();
?>
Puoi ottenere maggiori informazioni qui. E per i parametri multipli della query, consulta questo.

Grazie per il tuo aiuto, ho appena inserito il primo codice nel mio index.php per creare un template personalizzato. Ora vedo i post recenti ma senza link e sono solo una piccola lista sopra il mio contenuto. Come posso fare in modo che i post vengano visualizzati come nelle altre pagine del blog come questa - http://completemuscleandfitness.com/index.php/training/

Questo dipende totalmente dalla struttura DOM del tuo tema attuale. Cioè, da come è scritta la logica di presentazione attraverso PHP e HTML. Ad esempio, puoi semplicemente copiare e incollare l'intera logica di visualizzazione dei post nel tuo loop personalizzato invece dell'istruzione echo '<li>' . get_the_title() . '</li>';
e rimuovere il wrapping ul
attorno a essa.
Spero che questo ti aiuti.

Sto ricevendo molti input, lo apprezzo davvero. Credo di capire più o meno quello che stai dicendo. Penso che questo sia fondamentalmente il punto in cui mi blocco. In passato sono riuscito a far vedere i post recenti, ma non riesco a capire come farli visualizzare correttamente. Semplicemente non riesco a farmi un'idea chiara. Se postassi un altro template di blog del tema, qualcuno potrebbe aiutarmi partendo da quello?

Non riesco a capire cosa stai cercando di dire. Puoi approfondire ulteriormente?

Ok, riesco a far visualizzare i post recenti sulla mia pagina statica, ma hanno un aspetto disordinato. Probabilmente c'è del codice che devo inserire nella mia pagina personalizzata affinché i post vengano visualizzati nel formato normale del tema. Semplicemente non ho idea di quale codice inserire e dove, questo codice probabilmente potrebbe provenire da un altro template del tema? Sto chiedendo se, posto un template del tema, puoi aiutarmi a posizionare il codice dove serve?

Grazie! Per prima cosa questo è quello che ho finora nel mio template personalizzato, mostra i post ma senza formattazione - http://pastebin.com/Qq08Z3Fp Il seguente è il template del blog dal mio tema - http://pastebin.com/uJyfbEeg

Ho modificato il codice ed ecco il link http://pastebin.com/ubhyxpJV. Fai semplicemente un backup del tuo file template esistente e incolla tutto questo codice e penso che tu sia a posto.

Grazie per i tuoi sforzi Rohit, ho incollato il codice nel mio template personalizzato e l'ho attivato ma i post recenti non compaiono nella mia homepage?

Ho apportato alcune modifiche. Guarda qui http://pastebin.com/QrcBXW0N. Prova a sostituire questo codice con quello esistente e verifica.

Stiamo facendo progressi! Ora mostra i post recenti quasi come dovrebbero essere, ma li ripete in loop quindi ci sono 3 post continuamente. Inoltre, il contenuto originale della mia pagina è scomparso. Ancora una volta, non so come dirti quanto apprezzo il tuo aiuto.

Esamina i vari parametri della query e penso che sarai in grado di sistemare. Puoi consultare i parametri qui. Prova a cambiare i parametri in modo da ottenere il numero richiesto di post in base ai tuoi criteri.

Ok grazie, proverò. Un'ultima cosa, hai qualche idea su come posso far tornare visibile il resto dei contenuti? Ora i post occupano tutto lo spazio

Sì certo. Aggiungi semplicemente questa riga <?php get_template_part('home'); ?>
dopo <?php
/*
Template Name: Custom Homepage
*/
?>
e dovrebbe funzionare probabilmente. Prova e se non funziona, per favore indicami il codice del tuo file home.php
nella directory del tema attivo. Verifica se il file è presente. Se non c'è, prova a capire quale template viene caricato per la riga di codice che ti ho suggerito.

ok ora si vede ma come una pagina separata, abbastanza strano - www.completemuscleandfitness.com Ecco il codice del template - http://pastebin.com/3xDU9w3R e questo è il mio home.php - http://pastebin.com/XELee582

Come nel passaggio precedente, fai un backup del file e prova a sostituire il codice con questo e poi prova.

come prima ma i meta del footer sono scomparsi. Scusa se sono un problema...

Stai avendo qualche problema nella struttura del DOM. Io riesco a vedere la parte del footer. Controlla semplicemente la corretta struttura del DOM e penso che questo risolverà il problema.

Sono inutile, non so nemmeno come controllare la struttura del DOM...

A meno che non mi stia sfuggendo qualcosa, penso che stiate lavorando troppo duramente.
A mio avviso, il widget "articoli recenti" dovrebbe essere tutto ciò di cui avete bisogno.
Esempio:
La sezione "Notizie recenti" è proprio il widget "articoli recenti".
(Questo sito è ancora in costruzione - ecco perché ho "test" nel sottodominio.)
