Làm cách nào để tôi đặt tiêu đề trang một cách linh hoạt?


19

Có thể thay đổi tiêu đề trang bằng mã?

Ví dụ: giả sử tên của trang là "Đặt hàng của bạn", nhưng tôi muốn đổi nó thành "Đặt hàng số 123".

Tôi Google một chút và nhìn vào đây và không thấy gì cả. Bất cứ ai cũng biết về một plugin hoặc hack?

wp_title trả về tiêu đề trang nhưng không cho phép đặt tiêu đề trang: http://codex.wordpress.org/Function_Reference/wp_title


Giá trị sẽ đến từ đâu? Giá trị của # 123 là gì?
SEO Sagive

Câu trả lời:


23

Không có tài liệu nào về nó nhưng bạn luôn có thể áp dụng bộ lọc để the_titlethích điều này:

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;
}

Xem những điều này:

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

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


Điều này dường như ghi đè tất cả các tiêu đề. Làm cách nào để ghi đè chỉ tiêu đề hiện tại?
Petrus Theron

Bạn sẽ cần phải thêm một điều kiện để gọi lại, ví dụ:if ($post->ID == 45) { ... }
Nick Barrett

3
the_titlebộ lọc không còn hoạt động trong các phiên bản Wordpress mới nhất, sử dụng document_title_partshoặc pre_get_document_titlebộ lọc như chi tiết trong các câu trả lời khác.
Brendan Nee

8

Kể từ Wordpress 4.4, bạn có thể sử dụng bộ lọc Wordpress document_title_parts để thay đổi tiêu đề.

Thêm vào như sau 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;
}

nhưng bạn chuyển tham số vào bộ lọc ở đâu?
Tintinabulator Zea

Hàm trên sửa đổi cách thức the_title()get_the_title()chức năng hoạt động - vì vậy không cần phải vượt qua bất kỳ tham số nào.
Brendan Nee

5

Đối với những người muốn thay đổi titlethuộc tính của tài liệu , tôi thấy rằng việc sử dụng wp_titlebộ lọc không còn hoạt động. Thay vào đó, sử dụng các pre_get_document_titlebộ lọc :

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

Nguồn


1
cảm ơn vì đã quay lại nhiều năm sau để đăng cập nhật này. Tôi đã sử dụng wp_title trong một plugin của tôi trong nhiều năm và không nhận ra rằng nó không còn hoạt động cho đến bây giờ và câu trả lời của bạn đã tiết kiệm cho tôi rất nhiều nỗ lực. Cảm ơn bạn!
MatthewLee

@MatthewLee Rất vui khi biết điều đó đã giúp bạn :)
Nathan RebstateMonica Arthur

2

Thực sự phụ thuộc nếu bạn đang muốn hiển thị một tiêu đề tùy chỉnh cho trang hiện tại (tức là nội dung của <title></title> thẻ trong tiêu đề) hoặc lọc tiêu đề của các trang trong thân trang hoặc trong danh sách.

Trong trường hợp trước (tiêu đề của trang hiện tại), hãy thử thêm bộ lọc cho wp_title()như vậy: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Nếu bạn muốn sửa đổi tiêu đề trang trên bảng, việc lọc the_title()sẽ thực hiện thủ thuật: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title


Thật ra theo kinh nghiệm của tôi, bạn cần lọc cả hai wp_titlethe_titleđể che cả hai.
Geoffrey

Tôi không chắc chắn nếu đó là vì sự phản đối nhưng điều này không làm việc cho tôi. Tôi đã thử kết hợp và bộ lọc nội tuyến và ứng dụng mới_filters ('pre_get_document_title', chuỗi $ title)
hạ cánh

buồn thay, tôi cũng không làm việc
Debbie Kurth

Câu trả lời này đã gần 6 tuổi; với tư cách là người đăng (và ai đó không tích cực làm việc với WP nữa), tôi sẽ đề nghị xem tài liệu mới nhất thay thế.
nickb

1

Khi bật Yoast, bạn cần ghi đè tiêu đề như vậy:

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

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

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}

-1

Vì vậy, bạn muốn thay đổi tiêu đề trên cơ sở mỗi trang? Đầu tiên thiết lập một bài tùy chỉnh gặp một hộp. Tạp chí Smashing đã đưa tin này gần đây: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ . Sau đó, bạn có thể tạo một chức năng đơn giản để thay thế tiêu đề nếu hộp meta tùy chỉnh có giá trị.

Có một số plugin SEO cũng cung cấp chức năng này. Hãy thử Yoast SEO để biết ví dụ: http://wordpress.org/extend/plugins/wordpress-seo/

Hi vọng điêu nay co ich.


1
Những giải pháp này sẽ không thay đổi tiêu đề "động" nhưng "thủ công".
Gustavo

1
giải pháp tồi tệ nhất từ ​​trước đến nay
Vishal Kumar Sahu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.