2016-10-18 4 views
0

Я пытаюсь установить заголовок сообщения как HTTP-заголовок. Я пытался несколько вариаций кода ниже (с опцией ->ID и без) и ничего выходов или я получаю сообщение об ошибке: Trying to get property of non-object inЗаголовок сообщения Wordpress в функциях

is_admin() || add_action('send_headers', function(){ 
    global $post; 
    $title = get_the_title($post->ID); 
    header('X-IC-Title:' . $title); 
}, 1); 
+0

Что значит «ничего не печатает»? Заголовки HTTP не печатаются в браузере. Вы имеете в виду, что вы не видите добавленные заголовки в своем запросе? – maiorano84

+0

, пожалуйста, объясните вопрос –

+0

@ maiorano84 Извинения за мою терминологию. Да, я имею в виду, что я не вижу заголовки HTTP, которые я запросил. – Mike

ответ

1

Ваш код на самом деле очень близко.

Если вы взгляните на this list всех ваших крючков действия, вы увидите, что действие send_headers происходит до того, как объект Wordpress полностью настроен.

Это означает, что обычные объекты и функции, которые ссылаются на глобалы Wordpress, не будут работать в этой точке жизненного цикла. Фактически вам нужно заглянуть в ядро ​​чуть позже, чтобы вы могли получать данные, связанные с Post.

Я не уверен, почему у вас есть проверка is_admin() ||, префикс вашего действия. add_action возвращает звонок add_filter (Source), который, в свою очередь, возвращает логическое значение true (Source).

Короткое замыкание не будет никакой пользы для вас здесь, так что я изменил свой код на следующее:

add_action('wp', function(){ 
    global $post; 
    $title = get_the_title($post->ID); 
    header('X-IC-Title:' . $title); 
}, 1); 

Я проверил это в чистой установке Bedrock на сервере Homestead и я вижу новый заголовок в моем сетевом выходе (скриншот прилагается).

Bedrock Test

Надеется, что это помогает!

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