Problema cu afișarea conținutului pe pagina statică de start

2 apr. 2013, 03:51:42
Vizualizări: 17.3K
Voturi: 3

Cred că fac ceva greșit aici.

Am configurat site-ul meu cu o pagină de start statică folosind front-page.php. Am creat o pagină în admin cu un titlu și am selectat front-page.php în dropdown-ul de template.

Titlul meu se afișează corect, însă the_content(); nu apare.

Nu fac nimic special, așa cum se vede mai jos.

<?php
/*
Template Name: Pagina de start
*/ ?>
<?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>

Aveți idei de ce nu apare conținutul?

0
Toate răspunsurile la întrebare 2
3
10

Nu ai cu adevărat un Loop.

<?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(); 
  }
} ?>

Ceea ce se întâmplă este:

  1. Folosești have_posts() pentru a verifica dacă ai conținut de postare. Poți folosi o clauză else pentru a furniza conținut implicit dacă dorești.
  2. Parcurgi acel conținut folosind while(have_posts())
  3. Rulezi the_post() pentru a configura variabila $post și, de asemenea, pentru a incrementa contorul loop-ului. Încearcă fără the_post() și vei obține un loop infinit. Aceasta este partea cea mai critică care lipsea din codul tău.
  4. Acum că the_post() a fost rulat, template tag-urile tale pentru postare ar trebui să funcționeze conform așteptărilor.

Nu am editat prea radical codul tău, dar aș aduce și acel the_title în Loop, chiar dacă pare să funcționeze. Chiar ar trebui să fie în interiorul Loop-ului și nu funcționează întotdeauna conform așteptărilor în afara acestuia.

Referințe

https://codex.wordpress.org/Class_Reference/WP_Query#Methods

2 apr. 2013 04:03:26
Comentarii

Ce greșeală stupidă. Nu pot să cred că am ratat asta, a fost o zi lungă. Mulțumesc pentru observație.

dragonfeet2012 dragonfeet2012
2 apr. 2013 18:41:55

Nu este nevoie să folosești have_posts() în front-page.php; front-page.php va fi folosit doar dacă există un post de afișat. Deci poți pune direct the_post() și să lași afară instrucțiunile if și while.

micheal65536 micheal65536
19 ian. 2016 22:54:21

Tehnic poate fi adevărat, Michael, dar cu această recomandare vei crea tot felul de obiceiuri proaste și confuzii.

s_ha_dum s_ha_dum
19 ian. 2016 23:11:09
0

În primul rând, dacă ai setat pagina ta ca pagină frontală statică, nu este necesar să asociezi șablonul cu pagina, iar șablonul nu are nevoie de un header. WordPress folosește automat șablonul front-page.php pentru o pagină frontală statică, conform ierarhiei de șabloane.

Pentru a răspunde la întrebarea ta, trebuie să apelezi mai întâi the_post() pentru a inițializa variabilele globale de care se bazează funcția the_content().

2 apr. 2013 04:02:56