Plasarea titlului paginii în antet?

15 feb. 2015, 01:51:09
Vizualizări: 82.5K
Voturi: 4

În mod normal, în WordPress, titlul paginii apare în zona de conținut. Aș dori să am titlul paginii în zona antetului. Se pare că pentru a face acest lucru, ar trebui să-l elimin din locația sa curentă din content-page.php și să-l plasez în header.php. Dar content-page.php este apelat din page.php, care apelează content-page dintr-o buclă while (while ( have_posts() ) : the_post(); ...) -- astfel că ar trebui să mut sau să copiez și aceasta în antet, cred. Pare mult de lucru.

Ar avea mai mult sens să mut o parte din HTML-ul antetului în conținutul paginii, astfel încât să nu trebuiască să execut bucla while mai mult de o dată?

(Ca instrument de învățare, recreez un site HTML existent cu WordPress, folosind tema starter _s.)

--- EDITARE ---

Mulțumesc pentru răspunsuri. Foarte utile. Iată rezultatele unor teste, bazate pe răspunsurile voastre. Având următorul cod, în antet (în afara Loop):

wp_title(): <?php wp_title('', true,''); ?><br>
the_title(): <?php the_title(); ?><br>
single_post_title(): <?php single_post_title(); ?><br>
$post->post_name: <?php echo 'numele paginii: ' . $post->post_name; ?><br>
ispage? : <?php echo (is_page() ? 'da' : 'nu'); ?><br>
ispage(about-us) : <?php echo (is_page('about-us') ? 'da' : 'nu'); ?><br>
ispage(About Us) : <?php echo (is_page('About Us') ? 'da' : 'nu'); ?>

Când este vizualizat de pe pagina About Us, obțin:

wp_title() About UsAt The Tabernacle
the_title(): About Us
single_post_title(): About Us
$post->post_name: numele paginii: about-us
ispage? : da
ispage(about-us) : da
ispage(About Us) : da

Când este vizualizat de pe pagina Home, obțin:

wp_title(): At The Tabernacle Motto-ul site-ului meu aici
the_title(): Home
single_post_title(): Home
$post->post_name: numele paginii: home
ispage? : da
ispage(about-us) : nu
ispage(About Us) : nu

Și când este vizualizat dintr-o postare "Hello World", obțin:

wp_title(): Hello world!At The Tabernacle
the_title(): Hello world!
single_post_title(): Hello world!
$post->post_name: numele paginii: hello-world
ispage? : nu
ispage(about-us) : nu
ispage(About Us) : nu

Concluzie: Pot folosi the_title() sau single_post_title() (wp_title returnează mai mult text decât doresc). Și pot testa is_page(...) pentru a afișa un nume specific de pagină când vizualizez o postare.

Mulțumesc!

1
Comentarii

Dacă întrebarea ta a primit răspuns, te rugăm să marchezi răspunsul acceptat ca atare. Mulțumim.

tacudtap tacudtap
16 feb. 2015 03:44:01
Toate răspunsurile la întrebare 3
4

Dacă ai nevoie doar de titlu, îl poți solicita în afara buclei (loop) cu ușurință.

Încearcă să apelezi the_title() în header-ul tău. Ar trebui să funcționeze

Dar trebuie să fii conștient că dacă nu pui o condiție, fiecare pagină a site-ului tău va afișa titlul în secțiunea de header.

EDIT: funcția de apelat este get_the_title($post->ID) deoarece the_title() nu îți permite să specifici ID-ul postului ca argument. Poți verifica în Wordpress Codex funcțiile care îți permit să interoghezi informații din postări în afara buclei.

15 feb. 2015 04:04:59
Comentarii

the_title este destinat să fie folosit doar în bucla. Pentru a obține titlul unui post în afara buclei, folosește get_the_title( $post->ID )

Rachel Baker Rachel Baker
15 feb. 2015 20:42:17

Da, scuze, am confundat cele două.

mathieuhays mathieuhays
15 feb. 2015 22:04:04

De fapt, am verificat din nou și the_title() funcționează și în afara buclei. În cazul șabloanelor de arhivă, va afișa titlul primului articol. În cazul single.php și page.php va afișa titlul paginii. Poate fi util în anumite cazuri, dar nu este recomandat de documentație.

mathieuhays mathieuhays
15 feb. 2015 23:05:26

Foarte interesant! După cum am spus, sunt nou în WP, așa că nimic nu este evident pentru mine... (Inclusiv faptul că, aparent, nu pot apăsa enter pentru un rând nou într-un comentariu --- cred că voi posta o intrare separată mai jos.

user781470 user781470
16 feb. 2015 00:44:00
2

Trebuie să utilizați wp_title();

Dacă încercați să folosiți titlul articolului astfel:

<head> 
 <title> titlul articolului aici </title> 
</head>

Va trebui să adăugați wp_title(' ', true , ' ');

<head>
 <title> <?php wp_title('', true,''); ?> </title>
</head>

De exemplu: Dacă articolul vostru se numea Hello World, acest titlu va apărea acum în fila browserului.

http://codex.wordpress.org/Function_Reference/wp_title

15 feb. 2015 04:38:53
Comentarii

Întrebările bazate doar pe link-uri nu sunt bune. Te rog, explică ce trebuie făcut și de ce răspunde la întrebare. Și, dacă este posibil, postează un exemplu.

cybmeta cybmeta
15 feb. 2015 11:35:10

Mulțumesc. Ai răspuns primul, dar a trebuit să accept celălalt răspuns deoarece wp_title nu a funcționat pentru mine. Totuși, e bine de știut despre wp_title.

user781470 user781470
16 feb. 2015 20:11:28
0

Deși metodele menționate mai sus funcționează pentru moment, dezvoltatorii WordPress recomandă următoarele:

Începând cu versiunea 4.1 și tema Twenty Fifteen, metoda recomandată pentru afișarea titlurilor în teme este prin adăugarea suportului pentru titlu astfel: -Konstantin Obenland

Puteți adăuga această linie în fișierul functions.php al temei dumneavoastră după after_setup_theme. sau

de pe aceeași pagină,

Începând cu versiunea 4.1 și tema Twenty Fifteen, metoda recomandată pentru afișarea titlurilor în teme este prin adăugarea suportului pentru titlu astfel:

function theme_slug_setup() {
    add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'theme_slug_setup' );

Suportul ar trebui adăugat în acțiunea after_setup_theme sau init, dar nu mai târziu. Nu acceptă argumente suplimentare.

Ceea ce face acest lucru este să permită WordPress să aleagă titlul paginii în header, fără a folosi tag-uri hardcodate în fișierul header.php.

Titlul dumneavoastră va fi afișat în următorul format.

Titlul Paginii - Titlul Site-ului

15 nov. 2018 11:05:58