WordPress指定用户投稿分类

WordPress指定用户投稿分类

add_action( 'show_user_profile', 'restrict_user_form' );
add_action( 'edit_user_profile', 'restrict_user_form' );
function restrict_user_form( $user ) {
    if ( ! current_user_can('add_users'))
                        return false;
    $args = array(
                        'show_option_all'    => '',
                        'show_option_none'   => '未选择',
                        'orderby'            => 'ID', 
                        'order'              => 'ASC',
                        'show_count'         => 0,
                        'hide_empty'         => 0,
                        'child_of'           => 0,
                        'exclude'            => '',
                        'echo'               => 1,
                        'selected'           => get_user_meta( $user->ID, '_access', true),
                        'hierarchical'       => 0, 
                        'name'               => 'allow',
                        'id'                 => '',
                        'class'              => 'postform',
                        'depth'              => 0,
                        'tab_index'          => 0,
                        'taxonomy'           => 'category',
                        'hide_if_empty'      => false,
                        'walker'             => ''
                    );?>
                    <h3>限制该用户只能投稿到分类</h3>
                    <table class="form-table">
                        <tr>
                            <th><label for="access">选择分类:</label></th>
                            <td>
                                <?php wp_dropdown_categories($args);?>
                                <br />
                                <span class="description">用于限制投稿者的分类目录</span>
                            </td>
                        </tr>
                    </table>
                <?php
}

add_action( 'personal_options_update', 'restrict_save_data' );
add_action( 'edit_user_profile_update', 'restrict_save_data' );
function restrict_save_data( $user_id ) {
    if ( ! current_user_can( 'add_users' ) )
                        return false;
    update_user_meta( $user_id, '_access', $_POST['allow'] );
}
// check if the user loggin in is author and be restricted
function is_restrict() {
    if ( get_user_meta(get_current_user_id(), '_access', true) > 0 )
                            return true; else
                            return false;
}

add_action( 'save_post', 'save_restrict_post' );
function save_restrict_post( $post_id ) {
    if ( ! wp_is_post_revision( $post_id ) && is_restrict() ) {
        remove_action('save_post', 'save_restrict_post');
        wp_set_post_categories( $post_id, get_user_meta( get_current_user_id() , '_access', true) );
        add_action('save_post', 'save_restrict_post');
    }
}

add_action( 'edit_form_after_title', 'restrict_warning' );
function restrict_warning( $post_data = false ) {
    if (is_restrict()) {
        $c = get_user_meta( get_current_user_id() , '_access', true);
        $data = get_category($c);
        echo 'You are allowing to post to category: <strong>'. $data->name .'</strong><br /><br />';
    }
}

function restrict_remove_meta_boxes() {
    if (is_restrict() )
                        remove_meta_box('categorydiv', 'post', 'normal');
}
add_action( 'admin_menu', 'restrict_remove_meta_boxes' );

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据