La pagina statica homepage non mostra the_content

2 apr 2013, 03:51:42
Visualizzazioni: 17.3K
Voti: 3

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?

0
Tutte le risposte alla domanda 2
3
10

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 è:

  1. Usi have_posts() per verificare di avere contenuto da mostrare. Puoi usare un else per fornire contenuto predefinito se lo desideri.
  2. Scorri quel contenuto usando while(have_posts())
  3. Esegui the_post() per impostare la variabile $post e anche per incrementare il contatore del loop. Prova senza the_post() e otterrai un loop infinito. Questa era la parte più critica che mancava nel tuo codice.
  4. 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

2 apr 2013 04:03:26
Commenti

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

dragonfeet2012 dragonfeet2012
2 apr 2013 18:41:55

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.

micheal65536 micheal65536
19 gen 2016 22:54:21

Tecnicamente potrebbe essere vero Michael, ma con quella raccomandazione inizierai a creare ogni sorta di cattive abitudini e confusione.

s_ha_dum s_ha_dum
19 gen 2016 23:11:09
0

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().

2 apr 2013 04:02:56