2017-03-09 13 views
-1

在wordpress中,我們需要在分配給作者的作者的基礎上向正文添加一個「按」行。這需要在作者創建帖子時發生。我的代碼如下所示:在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是帖子的內容,但是author 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