La pagina statica homepage non mostra the_content
Devo aver fatto qualcosa di sbagliato qui.
Ho configurato il mio sito con una homepage statica usando front-page.php. Ho creato una pagina nell'admin con un titolo e ho selezionato front-page.php nel menu a tendina dei template.
Il mio titolo viene visualizzato correttamente, ma the_content(); no.
Non sto facendo nulla di speciale come mostrato qui sotto.
<?php
/*
Template Name: Homepage
*/ ?>
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text">
<?php the_content(); ?>
</div>
Qualche idea sul perché il contenuto non viene visualizzato?

In realtà non hai un Loop vero e proprio.
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text"><?php
if (have_posts()) {
while (have_posts()) {
the_post();
the_content();
}
} ?>
Quello che sta accadendo è:
- Usi
have_posts()
per verificare di avere contenuto da mostrare. Puoi usare unelse
per fornire contenuto predefinito se lo desideri. - Scorri quel contenuto usando
while(have_posts())
- Esegui
the_post()
per impostare la variabile$post
e anche per incrementare il contatore del loop. Prova senzathe_post()
e otterrai un loop infinito. Questa era la parte più critica che mancava nel tuo codice. - Ora che
the_post()
è stato eseguito, i tuoi template tag per i post dovrebbero funzionare come previsto.
Non ho modificato troppo radicalmente il tuo codice ma porterei anche the_title
all'interno del Loop, anche se sembra funzionare. Dovrebbe essere all'interno del Loop e non sempre funziona come previsto al di fuori di esso.
Riferimenti
https://codex.wordpress.org/Class_Reference/WP_Query#Methods

Che errore sciocco. Non posso credere di averlo trascurato, è stata una giornata lunga. Grazie per avermelo fatto notare.

Non è davvero necessario usare have_posts()
in front-page.php
; front-page.php
verrà utilizzato solo se c'è un post da visualizzare. Quindi puoi semplicemente inserire the_post()
e tralasciare le istruzioni if
e while
.

Innanzitutto, se hai impostato la tua pagina come pagina iniziale statica, non è necessario associare il template alla pagina, e il template non ha bisogno di un header. WordPress utilizza automaticamente il template front-page.php
per una pagina iniziale statica, come da gerarchia dei template.
Per rispondere alla tua domanda, devi prima chiamare the_post()
per impostare le variabili globali su cui si basa la funzione the_content()
.
