公认的解决方案不是将任何职位类型的可见性更改为任何状态的正确答案。下面的代码是更改post状态的正确方法。
function set_post_type_status_private( $status, $post_id ) {
$status = \'private\';
return $status;
}
add_filter( \'status_edit_pre\', \'set_post_type_status_private\', 10, 2 );
Updated:
当用户点击时,上述过滤器会将post状态更改为Private
Save Draft 或
Publish 按钮因此,在编辑页面加载时,如果您看到状态为Public,则不用担心。
还有一个过滤器可用于在保存到数据库之前更改状态。过滤器为status_save_pre
但我没有找到关于this page 所以我写了下面的代码来测试它。
function save_post_type_status_private( $status ) {
$status = \'private\';
return $status;
}
add_filter( \'status_save_pre\', \'save_post_type_status_private\', 10, 1 );
上述过滤器会在编辑页面加载后立即将帖子保存为“专用”帖子类型,因此可能需要在上面使用此过滤器
status_edit_pre
但如果我使用
status_save_pre
筛选我遇到问题,我无法删除任何帖子。因此,在WordPress团队修复此bug之前,我更喜欢“status\\u edit\\u pre”而不是“status\\u save\\u pre”。