问题描述

我正在尝试创建一个插件来改变 「添加新帖」 页面,因此可见性字段默认为”Private”:

Status: Draft
Visibility: **Private**
Publish immediately

[Publish]

… 而不是 WordPress 通常假设的:

Status: Draft
Visibility: **Public**
Publish immediately

[Publish]

目前,我正在使用”wp_insert_post_data” 过滤器,这样可以让我将”auto-draft” 的 post_status 的任何帖子更改为”private” 。虽然这样做,但是有一个意想不到的 side-effect:将 post_status 更改为”private” 似乎自动发布该信息,将编辑器中的按钮更改为”Update” 。此外,如果用户在指定标题之前保存,则该帖子将以标题”Auto-Draft” 发布。

有没有什么办法,我可以简单地改变可见性私人默认情况下,以不 auto-publish 的方式,并将按钮更改为”Update”?在香草 WordPress 中,用户可以手动将可见性更改为 「私人」,按钮仍然保留为 「发布」… 我只需要通过一个插件实现。我也想确保”public” 仍然可以由用户选择,他们是否愿意。

谢谢!

最佳解决方案

因为你正在开发一个 plug-in,我假设你不想触摸 wp-content /plugins 或../themes 之外的任何文件。

但是,如果不是这样,请按照以下步骤操作:去 wp-admin /includes /meta-boxes.php 找到:

$visibility = 'public';
$visibility_trans = __('Public');

现在改为明显:

$visibility = 'private';
$visibility_trans = __('Private');

再次,这会影响在插件文件夹之外的 meta-boxes.php 文件。尽管如此,我认为您应该采取的方法是创建一个新的元框,添加您的自定义可见性设置 (即私有),并使后者覆盖默认的 WP 可见性设置。

最好的,克里斯

次佳解决方案

从插件; 使用动作’post_submitbox_misc_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' );

?>

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。