Cum setez dinamic titlul paginii?

7 nov. 2011, 20:40:15
Vizualizări: 87.1K
Voturi: 27

Este posibil să schimb titlul paginii prin cod?

De exemplu, să zicem că numele paginii este "Plasează Comanda", dar vreau să îl schimb în "Comanda #123".

Am căutat pe Google și m-am uitat și aici dar nu am găsit nimic. Știe cineva vreun plugin sau vreo metodă?

wp_title returnează titlul paginii dar nu permite setarea acestuia: http://codex.wordpress.org/Function_Reference/wp_title

1
Comentarii

De unde ar veni valoarea? ce are în acea pagină valoarea #123 ?

Sagive Sagive
7 nov. 2011 20:51:20
Toate răspunsurile la întrebare 7
3
27

Nu există documentație oficială pentru acest lucru, dar poți aplica întotdeauna un filtru pe the_title astfel:

add_filter('the_title','some_callback');
function some_callback($data){
    global $post;
    // unde $data ar fi string(#) "titlul curent"
    // Exemplu:
    // (ar trebui să schimbi $post->ID cu metoda prin care obții numărul comenzii de carte,
    // dar poți vedea cum funcționează în acest fel cu global $post;)
    return 'Comanda de carte #' . $post->ID;
}

Vezi aceste link-uri:

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

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

7 nov. 2011 20:55:50
Comentarii

Se pare că acest lucru suprascrie toate titlurile. Cum pot suprascrie doar titlul curent?

Petrus Theron Petrus Theron
29 mar. 2017 19:47:45

Ar trebui să adaugi o condiție în callback, de exemplu if ($post->ID == 45) { ... }

Nick Barrett Nick Barrett
9 iul. 2018 06:55:42

Filtrul the_title nu mai funcționează în versiunile recente ale WordPress, folosește filtrele document_title_parts sau pre_get_document_title așa cum este detaliat în alte răspunsuri.

Brendan Nee Brendan Nee
15 nov. 2018 04:48:07
2
17

Începând cu WordPress 4.4, poți folosi filtrul WordPress document_title_parts pentru a modifica titlul.

Adaugă următoarele în functions.php:

add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
  // $title este un array cu părți ale titlului, inclusiv una numită `title`

  $title['title'] = 'Titlul meu nou';

  if (is_singular('post')) {
    $title['title'] = 'Postare nouă: ' . $title['title'];
  }

  return $title;
}
15 nov. 2018 04:46:35
Comentarii

dar unde treci parametrul pentru un filtru?

Tintinabulator Zea Tintinabulator Zea
22 dec. 2018 07:38:33

Funcția de mai sus modifică modul în care funcționează funcțiile the_title() și get_the_title() - deci nu este nevoie să transmiți niciun parametru.

Brendan Nee Brendan Nee
25 dec. 2018 21:51:51
2

Pentru cei care doresc să modifice atributul title al documentului, am descoperit că utilizarea filtrului wp_title nu mai funcționează. În schimb, folosiți filtru pre_get_document_title:

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "Titlul meu modificat";
}

Sursă

12 aug. 2018 22:41:37
Comentarii

mulțumesc că te-ai întors după ani de zile să postezi această actualizare. Foloseam wp_title într-un plugin al meu de ani de zile și nu am realizat că nu mai funcționează până acum, iar răspunsul tău m-a scutit de mult efort. Așadar, mulțumesc!

MatthewLee MatthewLee
11 ian. 2019 18:35:47

@MatthewLee Mă bucur să aud că ți-a fost de folos :)

Nathan Arthur Nathan Arthur
11 ian. 2019 20:52:20
0

Când Yoast este activat, trebuie să suprascrieți titlul astfel:

add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}
14 apr. 2019 23:29:15
4

Depinde foarte mult dacă doriți să afișați un titlu personalizat pentru pagina curentă (adică conținutul tag-ului <title></title> din header) sau să filtrați titlul paginilor din corpul paginii sau din liste.

În primul caz (titlul paginii curente), încercați să adăugați un filtru pentru wp_title() astfel: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Dacă doriți să modificați titlurile paginilor în general, filtrul the_title() va face treaba: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title

16 dec. 2013 00:32:47
Comentarii

Din experiența mea, trebuie să filtrezi atât wp_title cât și the_title pentru a acoperi ambele cazuri.

Geoffrey Geoffrey
26 mar. 2015 10:59:48

Nu sunt sigur dacă e din cauza deprecierii, dar la mine nu funcționează. Am încercat combinații și filtre inline, precum și noul apply_filters( 'pre_get_document_title', string $title )

landed landed
18 ian. 2017 20:00:11

din păcate nici una dintre variante nu a funcționat nici la mine.

Debbie Kurth Debbie Kurth
8 iun. 2019 08:46:46

Acest răspuns are aproape 6 ani; ca autor (și ca persoană care nu mai lucrează activ cu WP), aș sugera să consultați documentația cea mai recentă.

nickb nickb
9 iun. 2019 22:33:46
0

Dacă utilizați All In One Seo v4+, folosiți acest filtru:

add_filter( 'aioseo_title', 'aioseo_filter_title' );

function aioseo_filter_title( $title ) {
   if ( is_singular() ) {
      return $title . 'un conținut adițional pentru titlu aici';
   }
   return $title;
}
29 oct. 2021 14:04:28
2
-1

De fapt, cea mai ușoară metodă de a face acest lucru este să folosești o singură linie de JavaScript.

Introdu următorul cod în șablon:

<script>document.title = "<?php echo $new_title; ?>";</script>

Acest cod nu trebuie să fie în header-ul HTML, poate fi plasat în corpul (body) paginii HTML.

5 sept. 2020 08:14:55
Comentarii

Acest lucru nu va fi bun pentru SEO însă.

Alex Cook Alex Cook
21 nov. 2020 02:57:00

@AlexCook Ai perfectă dreptate. Lucram la o soluție rapidă pentru ceva unde SEO nu conta. Acum am uitat complet la ce era folosit. lol.

Feng Jiang Feng Jiang
21 nov. 2020 17:29:12