Afișarea titlului paginii în index.php

29 dec. 2014, 14:45:22
Vizualizări: 30.9K
Voturi: 4

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?

2
Comentarii

În primul rând, wp_title() este folosit pentru a afișa și pentru a interveni în elementul title al unui document. În al doilea rând, nu ar trebui să folosești the_title() în afara buclei (loop) în primul rând. În al treilea rând, te rog să furnizezi sursa fișierului index.php. the_title() funcționează corect atunci când este folosit conform instrucțiunilor ;-)

tacudtap tacudtap
16 feb. 2015 03:10:50

Pot confirma că întâlnesc același comportament specific. Adică cel mai recent articol de blog este folosit ca titlu al paginii în loc de titlul paginii.

Clarus Dignus Clarus Dignus
16 sept. 2019 00:30:27
Toate răspunsurile la întrebare 6
4

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ă.

16 feb. 2015 02:20:14
Comentarii

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

User User
21 mai 2015 15:08:23

De ce să nu folosești obiectul wp_query? $wp_query->query[pagename]

nodws nodws
3 mai 2019 02:12:36

single_post_title(); produce rezultatul dorit.

Clarus Dignus Clarus Dignus
16 sept. 2019 00:29:32

single_post_title() cu siguranță.

Dragi Postolovski Dragi Postolovski
30 ian. 2021 02:37:44
0

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

5 ian. 2016 19:53:50
2
$our_title = get_the_title( get_option('page_for_posts', true) );
// Obține titlul paginii principale pentru postări din setările WordPress
7 iul. 2017 13:33:08
Comentarii

Te rog [editează] răspunsul tău și adaugă o explicație: de ce ar putea rezolva problema?

fuxia fuxia
7 iul. 2017 16:35:26

funcționează! ha ha

Iggy Iggy
2 iun. 2019 05:42:15
0

Î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.

21 mar. 2024 23:15:35
0

Ș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.

28 mar. 2018 12:39:47
0

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.

7 iun. 2021 03:58:57