您更适合允许成员在您的网站上注册,然后为每个用户授予阅读不同帖子的权限。像这样的插件Members 这可能有用。
但是,如果你真的想按你的要求去做,你就必须进行一些javascript黑客攻击,或者完全删除发布元框,然后推出你自己的。遗憾的是,那里没有太多的过滤器可供使用。
要使用JS方式,您需要将脚本排队。。。
<?php
add_action( \'admin_print_scripts-post.php\', \'wpse38806_enqueue_js\' );
add_action( \'admin_print_scripts-post-new.php\', \'wpse38806_enqueue_js\' );
function wpse38806_enqueue_js()
{
if( \'post\' != get_post_type() ) return;
wp_enqueue_script(
\'wpse38806js\',
plugin_dir_url( __FILE__ ) . \'private.js\',
array( \'jquery\' ),
NULL,
true
);
}
。。。可能是这样的:
jQuery(document).ready(function(){
// hide the stuff you don\'t want
jQuery(\'label[for=visibility-radio-public], label[for=visibility-radio-private]\').hide();
jQuery(\'input#visibility-radio-public, input#visibility-radio-private\').hide();
// trigger clicks to open the various things
jQuery(\'a.edit-visibility\').trigger(\'click\');
jQuery(\'input#visibility-radio-password\').trigger(\'click\');
// stop form submission if there\'s no password, add an error message
jQuery(\'form#post\').submit(function(){
if( ! jQuery(\'input#post_password\').val() ){
jQuery(\'img#ajax-loading\').hide();
jQuery(\'input#publish\').removeClass(\'button-primary-disabled\');
jQuery(\'div.wrap h2\').after(\'<div id="message" class="error"><p>Please enter a password!</p></div>\');
return false;
}
});
});
要滚动您自己的提交元框,您可以将操作添加到
add_meta_boxes_post
在挂钩函数中,删除当前提交框,然后添加您自己的提交框。
<?php
add_action(\'add_meta_boxes_post\', \'wpse38806_hijack_meta_boxes\' );
function wpse38806_hijack_meta_boxes( $post )
{
remove_meta_box( \'submitdiv\', $post->post_type, \'side\' );
add_meta_box(\'submitdiv-2\', __(\'Publish\'), \'wpse38806_post_submit_meta_box\', $post->post_type, \'side\', \'high\');
}
在您的
wpse38806_post_submit_meta_box
回调时,应复制
post_submit_meta_box
, 找到int
wp-admin/includes/meta-boxes.php
, 并取出相关部分。这是一个很长的函数,所以我不会发布整个内容。我只是删除了一些我们不需要的内容,并添加了一些样式属性来强制显示内容。
function wpse38806_post_submit_meta_box($post) {
// snip snip
?>
<div class="misc-pub-section " id="visibility">
<?php if ( $can_publish ) { ?>
<div id="post-visibility-select" class="hide-if-js" style="display:block">
<input type="hidden" name="hidden_post_password" id="hidden-post-password" value="<?php echo esc_attr($post->post_password); ?>" />
<?php if ($post_type == \'post\'): ?>
<input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" <?php checked(is_sticky($post->ID)); ?> />
<?php endif; ?>
<input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="<?php echo esc_attr( $visibility ); ?>" />
<input type="radio" name="visibility" id="visibility-radio-password" value="password" <?php checked( $visibility, \'password\' ); ?> /> <label for="visibility-radio-password" class="selectit"><?php _e(\'Password protected\'); ?></label><br />
<span id="password-span" style="display:block"><label for="post_password"><?php _e(\'Password:\'); ?></label> <input type="text" name="post_password" id="post_password" value="<?php echo esc_attr($post->post_password); ?>" /><br /></span>
</div>
<?php } ?>
</div>
<?php
// snip snip
}
这些都是
as a plugin.