Як динамічно встановити заголовок сторінки?


19

Чи можна змінити заголовок сторінки з кодом?

Наприклад, скажімо, що назва сторінки - "Замовте замовлення", але я хочу змінити його на "Замовлення №123".

Я трохи заглянув у Google і нічого не побачив. Хтось знає плагін або хак?

wp_title повертає назву сторінки, але не дозволяє встановлювати заголовок сторінки: http://codex.wordpress.org/Function_Reference/wp_title


Звідки б взялося значення? що має на цій сторінці значення # 123?
Вибачте SEO

Відповіді:


23

Документації на нього немає, але ви завжди можете застосувати фільтр the_titleтак:

add_filter('the_title','some_callback');
function some_callback($data){
    global $post;
    // where $data would be string(#) "current title"
    // Example:
    // (you would want to change $post->ID to however you are getting the book order #,
    // but you can see how it works this way with global $post;)
    return 'Book Order #' . $post->ID;
}

Дивіться такі:

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

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


Це, здається, перекриває всі заголовки. Як я замінюю лише поточний заголовок?
Петрус Терон

Вам потрібно буде додати умову до зворотного дзвінка, наприкладif ($post->ID == 45) { ... }
Nick Barrett

3
the_titleФільтр більше не працює в останніх версіях Wordpress, використовує document_title_partsабо pre_get_document_titleфільтрує, як детально описано в інших відповідях.
Брендан Ніе

8

Станом на Wordpress 4.4, ви можете використовувати фільтр Wordpress, document_title_partsщоб змінити назву.

Додайте до functions.php:

add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
  // $title is an array of title parts, including one called `title`

  $title['title'] = 'My new title';

  if (is_singular('post')) {
    $title['title'] = 'Fresh Post: ' . $title['title'];
  }

  return $title;
}

але де ви передаєте параметр до фільтра?
Тінінабулятор Zea

Вищевказана функція змінює спосіб the_title()і get_the_title()функції роботи - тому не потрібно передавати жодні параметри.
Брендан Ніе

5

Для тих, хто бажає змінити titleатрибут документа , я виявив, що використання wp_titleфільтра вже не працює. Замість цього слід використовувати в pre_get_document_titleфільтр :

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

Джерело


1
Дякуємо, що через кілька років повернулися, щоб опублікувати це оновлення. Я використовував wp_title у моєму плагіні протягом багатьох років і не розумів, що він більше не працює до цих пір, і ваша відповідь заощадила мені багато зусиль. Тож дякую!
MatthewLee

@MatthewLee Радий почути, що це допомогло тобі :)
Натан Артур

2

Дійсно залежить, якщо ви хочете відобразити спеціальний заголовок для поточної сторінки (тобто вміст <title></title>тегу в заголовку) або відфільтрувати заголовок сторінок у тілі сторінки чи в списках.

У першому випадку (назва поточної сторінки) спробуйте додати фільтр wp_title()так: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Якщо ви хочете змінити заголовки сторінок на всій дошці, фільтрування the_title()виконає трюк: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title


Насправді, з мого досвіду, вам потрібно відфільтрувати і те, wp_titleі the_titleінше.
Джеффрі

Я не впевнений, чи це через зневагу, але це не працює для мене. Я спробував комбінації та вбудовані фільтри та новий apply_filters ('pre_get_document_title', рядок $ title)
приземлився

на жаль, ні для мене теж не працювало.
Деббі Курт

Цій відповіді майже 6 років; як плакат (і той, хто більше не працює з WP), я б запропонував переглянути останню документацію.
нік

1

Якщо увімкнено Yoast, вам потрібно змінити назву так:

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

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

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}

-2

Отже, ви хочете змінити заголовок на основі сторінки? По-перше, налаштування користувальницької публікації зустрічається вікном Smashing Magazine висвітлював це нещодавно: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ . Потім ви можете створити просту функцію для заміни заголовка, якщо спеціальне мета-поле має значення.

Існує кілька плагінів SEO, які також забезпечують цю функціональність. Спробуйте Йоаст SEO для прикладів: http://wordpress.org/extend/plugins/wordpress-seo/

Сподіваюсь, це допомагає.


1
Ці рішення не будуть змінювати назву "динамічно", але "вручну".
Густаво

1
найгірше рішення коли-небудь
Вішал Кумар Саху
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.