,我建議一些元框添加到您的文章類型,並通過the_content
應用過濾器不過還是你正在尋找一些核心破解再考慮這個例子顯示私人和公開內容的最佳方式
function alter_private_query($posts, $query) {
if (!is_user_logged_in() && !empty($query->is_singular) && isset($posts[0]->post_status) && $posts[0]->post_status == 'private') {
$posts = get_posts(array(
'name' => 'some-public-post-slug',
'post_type' => 'post',
'post_status' => 'publish',
'numberposts' => 1
));
}
return $posts;
}
add_filter('posts_results', 'alter_private_query', 1, 2);
沒有過濾器時,WordPress的清空$query->posts
如果不是在登錄的用戶。 仍然只是上面,你已經過濾posts_results
。使用這個,你可以用公共職位替換posts
變量。
這只是回答你的條件問題,我不會推薦它。畢竟WordPress提供給我們添加許多元框的能力。您甚至可以在不觸摸模板的情況下爲每個用戶顯示不同的內容。
注意:這可能會造成搜索引擎優化的問題,因爲你會有兩個相同的內容 後有兩個不同的URL。機器人不能登錄到您的 網站。