Master-X
Форум | Новости | Статьи
Главная » Форум » Блоги и Социальные сети » 
Тема: Вопрос по WP
цитата
02/03/13 в 09:52
 Blackout
Мне нужно разрешить конкретному зарегеному юзеру постить без модерации в конкретную категорию (только в нее одну) и соответственно чтобы у него не было доступа на редактирование постов из других категорий (и в идеале не было прав вообще, кроме вышеописанных). Можно ли это реализовать?
цитата
02/03/13 в 10:26
 Дартаньян
Blackout: плагин User Role Editor, дай права автора, задай постам в категории его авторство.
цитата
02/03/13 в 10:54
 Blackout
Поставил, посмотрел. Не нашел там про "постить без модерации в конкретную категорию (только в нее одну)"
цитата
02/03/13 в 11:02
 Дартаньян
Blackout: черт, точно, тут решения не знаю =(.
цитата
02/03/13 в 14:28
 Yacc
Пользователи в массиве $users с ключами по логину пользователей (в примере admin). Категория (в примере Uncategorized) должна существовать иначе посты создаваться не будут.

Вроде работает, но я особо не тестировал, проверяй сам.

wp-content/plugins/foo/foo.php
<?php

/*
Plugin Name: foo
*/

   
require ABSPATH.WPINC.'/pluggable.php';

global $pagenow;
global $current_user;

get_currentuserinfo();

$users = array(
    'admin' => array(
        'page' => array(
            'index.php' => true,
            'edit.php' => true,
            'post.php' => true,
            'post-new.php' => true
        ),
        'category' => 'Uncategorized'
    )
);
$msg = "You don&#8217;t have premissions to access this page.";

if(isset($users[$current_user->user_login])) {
    add_filter('xmlrpc_enabled', '__return_false');
    add_filter( 'enable_post_by_email_configuration', '__return_false' );
    if(is_admin()) {
        $user = $users[$current_user->user_login];
        if(isset($user['page'][$pagenow])) {
            add_action('pre_get_posts', create_function('', 'global $typenow;if(\'post\'!=$typenow)wp_die(\''.$msg.'\');'));
            if($pagenow == 'edit.php') {
                add_action('pre_get_posts', create_function('','set_query_var(\'author\','.$current_user->ID.');'));
                add_filter('post_row_actions', 'remove_quick_edit_link');
                add_filter('wp_dropdown_cats', '__return_false');
                add_filter('manage_posts_columns', 'remove_columns');
            }
            else if($pagenow == 'post.php' or $pagenow == 'post-new.php') {
                add_action('do_meta_boxes', 'remove_metaboxes');
                add_filter( 'option_default_category', create_function('$value', 'return '.get_cat_ID($user['category']).';'));
            }
        }
        else
            wp_die($msg);
    }
}

function remove_columns($columns){
    unset($columns['author']);
    unset($columns['categories']);
    unset($columns['tags']);
    unset($columns['comments']);
    return $columns;
}

function remove_quick_edit_link($actions) {
    if(isset($actions['inline hide-if-no-js']))
        unset($actions['inline hide-if-no-js']);
    return $actions;
}

function remove_metaboxes() {
    remove_meta_box('categorydiv', 'post', 'side');
    remove_meta_box('formatdiv', 'post', 'side');
    remove_meta_box('tagsdiv-post_tag', 'post', 'side');
    remove_meta_box('postimagediv', 'post', 'side');
    remove_meta_box('slugdiv', 'post', 'normal');
    remove_meta_box('postexcerpt', 'post', 'normal');
    remove_meta_box('trackbacksdiv', 'post', 'normal');
    remove_meta_box('postcustom', 'post', 'normal');
    remove_meta_box('commentstatusdiv', 'post', 'normal');
    remove_meta_box('commentsdiv', 'post', 'normal');
    remove_meta_box('revisionsdiv', 'post', 'normal');
    remove_meta_box('authordiv', 'post', 'normal');
    remove_meta_box('sqpt-meta-tags', 'post', 'normal');
}


Эта страница в полной версии