2016-10-18 5 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を見ると、Wordpressオブジェクトが完全に設定される前にsend_headersアクションが発生することがわかります。

これは、Wordpressグローバルを参照する通常のオブジェクトと関数は、ライフサイクルのこの時点では機能しないということです。ポスト関連のデータを取得できるようにするには、実際に少し後でコアにフックする必要があります。

あなたのアクションフックの先頭にis_admin() ||チェックが付いている理由がわかりません。 add_actionは、trueSource)のブール値を返すadd_filterSource)への呼び出しを返します。

短絡するが、ここであなたに任意の使用のではないでしょうので、私は次のようにコードを変更した:

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

私はホームステッドサーバー上のきれいな岩盤のインストールでこれをテストしてみました私はネットワーク出力(スクリーンショット添付)の新しいヘッダーを見ています。

Bedrock Test

うまくいけば、このことができます!

関連する問題