Afișarea titlului paginii în index.php
Am pagina mea de articole setată ca index.php
și acolo am titlul principal (ca pe toate paginile).
Am probleme cu afișarea titlului paginii. Pagina se numește 'Blog' în WordPress și a fost specificată ca pagină de articole.
Dacă afișez titlul paginii cu wp_title('');
, obțin titlul paginii — 'Blog' — dar cu numele site-ului după acesta (probabil din cauza plugin-ului Yoast SEO).
Dacă folosesc the_title()
atunci îmi afișează titlul celui mai recent articol de blog, chiar dacă apelez funcția în afara buclei.
Așa că a trebuit să recurg la hardcodare simplă <h1>Blog</h1>
ceea ce este departe de ideal.
Există vreo modalitate prin care pot prelua numele titlului paginii în mod dinamic, dar doar titlul paginii singur?

Ciudat. În afara buclei, the_title() ar trebui să returneze numele paginii curente, dacă chiar te afli pe o pagină și nu vizualizezi un anumit articol. Dacă returnează titlul articolului în schimb, poate însemna că cumva te afli în interiorul unei bucle. Dar dacă ar fi așa, wp_title nu ar trebui să afișeze "Blog".
Verifică dacă alte opțiuni returnează același rezultat:
//the_title();
single_post_title();
echo $post->post_name; // Cred că acesta afișează numele paginii din URL
De asemenea, verifică is_page(). Poți încerca testul is_page('Blog').
if (is_page('blog')) {
echo 'Blog';
}
else {
the_title();
}
doar pentru a vedea ce se întâmplă.

scuze pentru răspunsul extrem de întârziat, single_post_title();
pare să funcționeze, voi merge cu asta! ;)

Este corect că the_title()
pe pagina de blog va returna titlul celui mai recent articol și, prin urmare, nu poate fi utilizat.
Când o pagină este setată ca "pagină de articole" din setările de citire, WP apelează fișierul șablon home.php
(sau index.php
dacă home.php
nu există) în loc de page.php
(vezi: Ierarhia șabloanelor).
Deci, condiția is_page()
nu va funcționa pe pagina de blog deoarece aceasta nu mai este o pagină obișnuită.
Singura modalitate de a afișa titlul real al paginii este utilizarea funcției single_post_title();
single_post_title()
face parte din fișierul general-template.php, unde se specifică clar:
Dacă ne aflăm pe pagina de blog și acea pagină nu este pagina principală sau o pagină unică desemnată ca homepage, se utilizează titlul paginii container.
Puteți revizui codul și comentariile aici https://core.trac.wordpress.org/browser/tags/4.4/src/wp-includes/general-template.php#L871

În primul rând, trebuie să verifici dacă este o pagină de blog. Apoi, dacă este adevărat, folosește funcția single_post_title()
.
( ( !is_front_page() && is_home() ) ? single_post_title() : the_title() );
Aici se consideră că pagina de blog nu este pagina principală.
is_page()
nu va funcționa deoarece pagina de blog nu mai este o pagină în WordPress.

Știu că a trecut ceva timp de la postarea originală, dar sper că acest lucru îi va ajuta pe alții care au ajuns aici în căutarea aceluiași lucru.
Funcția single_post_title() funcționează pentru pagini până când ajungi la paginile de blog și categorii (și probabil la paginile de produse și etichete în WooCommerce).
Deci, mai întâi verifică simplu dacă este o pagină, altfel folosește funcția wp_title:
if (is_page()) {
single_post_title();
} else {
echo rtrim(wp_title('', false), '- ');
}
A trebuit să elimin titlul site-ului din setările mele, dar oricum îl adăugam manual pe ambele părți ale acestei funcții.

Există două metode pentru a obține titlul postării/paginii în WordPress.
get_the_title();
și the_title();
Cum se utilizează get_the_title();
<h1 class="entry-header text-primary fst-italic"><?php echo esc_html( get_the_title() ); ?></h1>
Cum se utilizează the_title();
the_title('<h1 class="entry-title text-primary fst-italic">', '</h1>');
Care este diferența dintre get_the_title();
și the_title();
?
the_title();
va afișa valoarea, în timp ce get_the_title();
nu o afișează (doar returnează valoarea).
Acesta este standardul pentru funcțiile WordPress: funcțiile care încep cu the_
vor afișa ceea ce returnează funcția corespunzătoare care începe cu get_
. Alte funcții au un parametru pentru a alege dacă să afișeze sau nu, iar altele doar returnează valori.
