페이지 제목을 동적으로 설정하는 방법


19

코드로 페이지 제목을 변경할 수 있습니까?

예를 들어, 페이지 이름이 "주문 예약"이라고하고 "도서 주문 # 123"으로 변경하고 싶다고 가정하겠습니다.

나는 구글을 조금 보았고 여기를 보았고 아무것도 보지 못했습니다. 누구나 플러그인이나 해킹을 알고 있습니까?

wp_title은 페이지 제목을 반환하지만 페이지 제목 설정은 허용하지 않습니다. http://codex.wordpress.org/Function_Reference/wp_title


가치는 어디에서 오는가? 해당 페이지에서 # 123의 값은 무엇입니까?
Sagive 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


이것은 모든 제목보다 우선합니다. 현재 타이틀 만 재정의하려면 어떻게합니까?
Petrus Theron

콜백에 조건을 추가해야합니다. 예 :if ($post->ID == 45) { ... }
Nick Barrett

3
the_title필터는 더 이상 최신 워드 프레스, 사용 버전에서 작동하지 않습니다 document_title_parts또는 pre_get_document_title다른 답변에 설명 된대로 필터.
Brendan Nee

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

그러나 매개 변수를 필터에 어디로 전달합니까?
Tintinabulator Zea

위의 기능 수정은 방법 the_title()get_the_title()기능이 작동 - 필요 어떤 매개 변수를 전달하지 할 수 있도록.
Brendan Nee

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 다행이 당신에게 도움이된다고 들었습니다 :)
Nathan Arthur

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모두를 커버 할 수 있습니다.
Geoffrey

더 이상 사용되지 않아서 확실하지 않지만 tis가 나를 위해 작동하지 않습니다. 조합 및 인라인 필터와 새로운 apply_filters ( 'pre_get_document_title', string $ title)를 시도
했습니다

슬프게도 나에게도 효과가 없었습니다.
Debbie Kurth 2016 년

이 답변은 거의 6 살입니다. 포스터 (그리고 더 이상 WP와 적극적으로 일하지 않는 사람)로서 대신 최신 문서를 보는 것이 좋습니다.
nickb

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 플러그인이 있습니다. 예를 들어 Yoast SEO를 사용해보십시오 : http://wordpress.org/extend/plugins/wordpress-seo/

도움이 되었기를 바랍니다.


1
이러한 솔루션은 제목을 "동적으로"변경하지 않고 "수동으로"변경합니다.
구스타보

1
최악의 솔루션
Vishal Kumar Sahu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.