我正在尝试创建一个插件来更改添加新帖子页面,以便可见性字段在默认情况下显示“Private”:
Status: Draft
Visibility: **Private**
Publish immediately
[Publish]
。。。与WordPress通常的假设相反:
Status: Draft
Visibility: **Public**
Publish immediately
[Publish]
目前,我正在使用“wp\\u insert\\u post\\u data”过滤器,这允许我将任何post\\u状态为“auto draft”的帖子更改为“private”。虽然这样做有效,但也有一个意想不到的副作用:将post_状态更改为“private”似乎会自动发布帖子,将编辑器中的按钮更改为“Update”。此外,如果用户在指定标题之前保存,则将以标题“自动草稿”发布帖子。
我有没有办法在默认情况下将可见性更改为Private,而不自动发布帖子,并将按钮更改为“更新”?在vanilla WordPress中,用户可以手动将可见性更改为Private,按钮保持为Publish。。。我只需要通过一个插件来实现这一点。我还想确保用户仍然可以选择“public”,如果他们愿意的话。
谢谢
最合适的回答,由SO网友:cr0z3r 整理而成
由于您正在开发一个插件,我假设您不想接触wp内容/插件之外的任何文件,或者/这方面的主题。
但是,如果不是这样,请按照以下步骤操作:
转到wp admin/INCLUDE/meta框。php和查找:
$visibility = \'public\';
$visibility_trans = __(\'Public\');
现在将其更改为显而易见的:
$visibility = \'private\';
$visibility_trans = __(\'Private\');
同样,这会影响元框。位于plugins文件夹之外的php文件。尽管如此,我认为你应该采取的方法是
creating a new meta box, adding your custom visibility setting (i.e. private) and make the latter override the default WP visibility setting.
最佳,
克里斯
SO网友:hearvox
来自插件;使用操作“post\\u submitbox\\u misc\\u actions”和一些查询来捕获用户发布表单:http://wordpress.org/extend/plugins/private-post-by-default/
function default_post_visibility(){
global $post;
if ( \'publish\' == $post->post_status ) {
$visibility = \'public\';
$visibility_trans = __(\'Public\');
} elseif ( !empty( $post->post_password ) ) {
$visibility = \'password\';
$visibility_trans = __(\'Password protected\');
} elseif ( $post_type == \'post\' && is_sticky( $post->ID ) ) {
$visibility = \'public\';
$visibility_trans = __(\'Public, Sticky\');
} else {
$post->post_password = \'\';
$visibility = \'private\';
$visibility_trans = __(\'Private\');
} ?>
<script type="text/javascript">
(function($){
try {
$(\'#post-visibility-display\').text(\'<?php echo $visibility_trans; ?>\');
$(\'#hidden-post-visibility\').val(\'<?php echo $visibility; ?>\');
$(\'#visibility-radio-<?php echo $visibility; ?>\').attr(\'checked\', true);
} catch(err){}
}) (jQuery);
</script>
<?php
}
add_action( \'post_submitbox_misc_actions\' , \'default_post_visibility\' );
?>