2017-03-09 40 views
-1

私たちは、記事に割り当てられた著者に基づいて、本文に 'By'行を追加する必要があります。これは著者が投稿を作成するときに発生する必要があります。私のコードは次のようになりますけれども、ここで投稿者content_pre_save

function append_author($content, $post_id) { 
    $author_id = get_post_field('post_author', $post_id); 
    $author_meta = get_user_meta($author_id); 
    $author = '<div class="block-author">By '.$author_meta[first_name][0]." ".$author_meta[last_name][0].'</div>'; 
    return $author.$content; 
} 
add_filter('content_save_pre', 'append_author'); 

問題管理者は、作者のためのポストを作成し、ちょうど著者オーバーライド]ドロップダウンを経由して、原作者を割り当てるときに、コードが著者としてadminを挿入します、ということです。

コンテンツはまだ保存されておらず、システムはデフォルトで作成者として投稿者を割り当てられているためだと思いますか?そうであれば、content_author_overrideフィールドの値を取得して、割り当てられた著者を取得し、それを使って 'byline'を挿入する方法はありますか?

私は$contentが投稿の内容だと知っていますが、著者IDの変数は何ですか?

+0

以下の回答はあなたを助けましたか? – yivi

答えて

0

私はあなたが間違った方法に近づいていると思います。

投稿内容には行を挿入しないでください。投稿テンプレートを変更して、必要な場所の行を印刷し、投稿情報から動的に生成します。

このようにして、メタ情報が変更された場合、または作成者自身が行う場合は、常に正しく印刷されます。それだけでなく、同じ著者であっても、複数の変更についてのあなたのアプローチでは、コンテンツに複数のバイナリボックスを追加することになります。あなたが望むものではないと思います(もしそうであれば、投稿の改正

ちょうどあなたが(ほぼ)既に持っているコードを追加します。該当するテンプレートに

$author_meta = get_user_meta(get_the_author_meta('ID')); 
$author = '<div class="block-author">By '.$author_meta[first_name][0]." ".$author_meta[last_name][0].'</div>'; 

あなたの例では(私はを追求しないを助言することになります)、あなたは次のようにして著者IDを取得します:

$post  = get_post($post_id); 
$author_id = $post->post_author; 
+0

ありがとうございます。私はそれを自分でやっていますが、行に沿ってミディアムに移植されるときに、ボディに含める必要があります。ミディアムトークンのないすべての作者は作者として識別できないため、作者は本文に含める必要があります。 –

+0

しかし私は答えの最後にそれをどうやって行うかについての解決法も提供しました。 :) – yivi

関連する問題