2016-03-18 2 views
3

Я пытаюсь изменить название моей подробной страницы на название автомобиля. Я сделал плагин, который заполняет страницу деталей информацией о машине. Но теперь я не могу заставить add_filter ('wp_title') работать в моем плагине.add_filter ('wp_title') не заменяет мой тег заголовка (плагин WordPress)

Вот код, который я попробовал:

function init() { 
    hooks(); 
} 
add_action('wp', 'init'); 

function hooks() { 
    if(get_query_var('car_id') != "") { 
     add_filter('wp_title', 'addTitle', 100); 
     add_action('wp_head', 'fillHead'); 
    } 
    add_shortcode('showCar', 'showCar'); 
} 

function addTitle() { 
    $api_url_klant = API_URL . '/gettitle/' . get_option("ac") . '/' . get_query_var('car_id'); 
    $title = getJSON($api_url_klant); 
    return $title['merk'] . " " . $title['model'] . " - " . $title['bedrijf']; 
} 

addTitle функция() работает просто отлично. Он возвращает правильное имя. Также работает add_action ('wp_head'). Я не могу заставить фильтр wp_title работать.

Я выполняю этот фильтр в неподходящий момент или что я делаю неправильно?

ответ

8

Я не могу сказать из кода вы предоставили, но вы используете:

<title><?php wp_title(); ?></title> 

в вашем <head> под header.php?

UPDATE

По-видимому, изменение было сделано с тем, как заголовки обрабатываются в 4,4. Вот ссылка, которая объясняет, как использовать новый код:

https://www.developersq.com/change-page-post-title-wordpress-4-4/

/* 
* Override default post/page title - example 
* @param array $title { 
*  The document title parts. 
* 
*  @type string $title Title of the viewed page. 
*  @type string $page Optional. Page number if paginated. 
*  @type string $tagline Optional. Site description when on home page. 
*  @type string $site Optional. Site title when not on home page. 
* } 
*  @since WordPress 4.4 
*  @website: www.developersq.com 
*  @author: Aakash Dodiya 
*/ 
add_filter('document_title_parts', 'dq_override_post_title', 10); 
function dq_override_post_title($title){ 
    // change title for singular blog post 
    if(is_singular('post')){ 
     // change title parts here 
     $title['title'] = 'EXAMPLE'; 
    $title['page'] = '2'; // optional 
    $title['tagline'] = 'Home Of Genesis Themes'; // optional 
     $title['site'] = 'DevelopersQ'; //optional 
    } 

    return $title; 
} 
+0

Я так считаю. То что в стандартной теме Wordpress правильно? Его в плагине, чтобы все названия были заменены. –

+0

Кажется, что в двадцать четыре года, но я не вижу его в двадцать пятнадцать или два раза. Я никогда не использую темы WP по умолчанию, поэтому я не уверен ... но я использовал аналогичный код для того, что у вас есть десятки раз. Я всегда убеждаюсь, что wp_title() вызывается вручную ... Добавьте его и посмотрите, не изменится ли ситуация. –

+0

Он должен работать изнутри плагина, потому что он будет использоваться на многих сайтах. Поэтому я не хочу ничего менять по теме –

11

Если кто-то есть проблемы с этим, это может быть связано с плагином Йоаст. Использование:

add_filter('pre_get_document_title', function($title){ 
    // Make any changes here 
    return $title; 
}, 999, 1); 
+0

Спасибо, я попробую это также, когда я снова работаю над этим. –

+0

Чтобы обойти фильтры заголовков Yoast, но сохраните преимущества 'document_title_parts', мы также можем вернуть пустую строку в фильтр' wpseo_title': 'add_filter ('wpseo_title', '__return_empty_string');' Кажется, что Yoast возвращается в исходное положение к родному названию WordPress. – joemaller

 Смежные вопросы

  • Нет связанных вопросов^_^