Существует ли путь (плагин?) для ограничения пользователя способностью отредактировать всего одну страницу?

Мы используем Wordpress как CMS и очень хотели бы позволить пользователям иметь "домашнюю страницу". Идеально им препятствовали бы пачкать целый сайт.

Существует ли простой способ ограничить пользователей, редактирующих права на единственную страницу?

Я в настоящее время использую членский плагин, чтобы сделать другой основанный на разрешении материал, таким образом, было бы замечательно, если решение могло бы или аккуратно увеличить это или заменить его полностью.

Бонусные очки для автоматического создания домашней страницы, когда новый пользователь создается.


ОБНОВЛЕНИЯ: Я должен разъяснить, что эти страницы должны быть ограничены определенной областью сайта (т.е. все дети той же страницы). Кроме того, после разговора с некоторыми пользователями кажется, что они нашли бы полезным создать подстраницы, переходящие из их домашней страницы.

9
30.01.2011, 14:06
8 ответов

Извините, что сделал это, но я споткнулся через ответ на форумах Wordpress.

Оказывается, что Роль Scoper делает это действительно хорошо. Автор того сообщения форума сказал это лучше всего:

Позволять пользователю еще отредактировать одну конкретную страницу, но ничто:

  1. Дайте им роль WordPress Подписчика
  2. Справьтесь> Страницы> Редактирование их страница
  3. Разверните вкладку "Editors" под "Расширенными настройками"
  4. Проверьте незаключенный в фигурные скобки флажок слева от имени своего пользователя (если дочерние страницы будут созданы, также проверьте заключенный в фигурные скобки флажок {[]}, который присваивает роль для всех текущих или будущих дочерних страниц),
  5. Сохраните страницу
4
19.02.2020, 22:01
  • 1
    Походит на ручной процесс. Что, если у Вас есть тысячи пользователей? –  MikeSchinkel 29.01.2011, 22:16
  • 2
    Это, конечно, верно, но это является самым близким до сих пор. Я сохраню щедрость открытым правом до конца. –  Tom Wright 30.01.2011, 13:59

Основная установка WordPress, вероятно, не сделает то, к чему Вы хотите ее. Вы могли настроить многоузловой экземпляр и позволить пользователям иметь свой собственный 'sub' сайт, или использовать что-то как BuddyPress или Смешиваться, который имеет функцию профиля пользователя.

5
19.02.2020, 22:01

Я использовал бы менеджера по Возможности или роли выезда и возможности в кодексе, чтобы сделать это.

1
19.02.2020, 22:01

Я столкнулся с той же ситуацией как Вы и что я сделал был, создают пользовательский тип сообщения, названный" домашняя страница" и также созданный "Предельный плагин" Создания Сообщений Bainternet для ограничения создания каждого типа сообщения на пользователя. Попробуйте его http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/

3
19.02.2020, 22:01
  • 1
    Хороший простой подход. Небольшая проблема с ним являющийся сообщением базировалась - я также хочу ограничить, где страница. –  Tom Wright 30.01.2011, 14:04
  • 2
    , где страница? хотеть объяснить? –  Bainternet 30.01.2011, 16:05
  • 3
    Таким образом, проблема здесь состоит в том, что я хочу иметь все пользовательские страницы в том же месте. Т.е. mysite.com/users/bob Плюс, я также хочу позволить подстраницы в том же стиле: mysite.com/users/bob/mysubpage –  Tom Wright 01.02.2011, 17:14

Я сделал что-то похожее с "участниками", пользовательским типом сообщения и ручным присвоением прав автора определенному участнику, так как это - веб-сайт небольшой группы, но я действительно не забываю читать в некотором потоке поддержки нажатия приятеля, который возможно сцепить в процесс регистрации, таким образом, я предполагаю, что было бы возможно автоматически создать тип сообщения страницы / пользовательский тип сообщения на пользователя на регистрации и присвоить ту определенную страницу недавно созданному участнику как домашняя страница. Я также добавил редактора фронтенда Scribu и заблокировал бэкенд участникам, которые не являются администраторами. Можно, вероятно, также добавить перенаправление на регистрации, таким образом, новые участники перенаправляются к их странице (который, я предполагаю, мог иметь некоторое содержание по умолчанию).

Я буду видеть, могу ли я найти это потоком поддержки buddypress.

Приложение - существует ошибка в селекторе автора на поле сообщения редактирования. Это в настоящее время не использует стандартную систему разрешения, которая может сделать членское решение более трудным (хотя это будет, вероятно, работать, если автору присвоят на создании страницы). В trac существует патч, но я не думаю, что он был применен к ядру все же.

0
19.02.2020, 22:01

Решение implys, что Вы отключили редактирование "нормальных" типов сообщения (сообщение, страница).

Это не настолько твердо, как Вы могли бы верить. Ключ является пользовательским именем для входа в систему. То же могло быть сделано с taxonomies или даже называет.

Посмотрите следующее (существует пример для запроса также):

// 1st: Add a post type for that user with it's 
//   user login & according capabilities 
function create_user_home() {
    global $current_user;
    get_currentuserinfo();

    register_post_type(
        'home_of_'.$current_user->user_login,
        array(
            'public' => true,
            'capability_type' => $current_user->user_login,
            'capabilities' => array(
                'publish_posts' => 'publish_'.$current_user->user_login,
                'edit_posts' => 'edit_'.$current_user->user_login,
                'edit_others_posts' => 'edit_'.$current_user->user_login,
                'delete_posts' => 'delete_'.$current_user->user_login,
                'delete_others_posts' => 'delete_others_'.$current_user->user_login,
                'read_private_posts' => 'read_private_'.$current_user->user_login,
                'edit_post' => 'edit_'.$current_user->user_login,
                'delete_post' => 'delete_'.$current_user->user_login,
                'read_post' => 'read_'.$current_user->user_login,
            ),
        )
    );
}
add_action( 'init', 'create_user_home' );

// A query could be done like this:
wp_reset_query(); // to be sure

global $wp_query, $current_user;
get_currentuserinfo();

$query_user_home = new WP_Query( array(
    ,'order'        => 'ASC'
    ,'post_type'    => 'home_of_'.$current_user->user_login
    ,'post_status'  => 'publish'
) );

if ( $query_user_home->have_posts() ) :
    while ( $query_user_home->have_posts() ) : $query_user_home->the_post();
        // check for password
        if ( post_password_required() ) :
            the_content();
        elseif ( !current_user_can('') ) :
            // display some decent message here
            return;
        else :

            // here goes your content

        endif;
    endwhile;

else : // else; no posts
    printf(__( 'Nothing from Mr./Mrs. %1$s so far.', TEXTDOMAIN ), $current_user->user_firstname.' '.$current_user->user_lastname);
endif; // endif; have_posts();

wp_rewind_posts(); // for a sec. query

С taxonomies это даже имело бы больше смысла, потому что Вы могли запросить только сообщения, которые отмечены с условиями от этого пользователи taxonomies, но этому было бы нужно сообщение meta поле с пользовательскими условиями таксономии. Условие было бы тем же: пользовательское имя для входа в систему и Вы просто добавили бы таксономию:

function create_user_tax() {
    if ( current_user_can("$current_user->user_login") ) :
        global $current_user;
        get_currentuserinfo();

        $singular = $current_user->user_login;
        $plural = $singular.'\'s';

        // labels
        $labels = array (
                 'name'         => $plural
                ,'singular_name'=> $singular
            );

        // args
        $args = array (
             'public'               => true
            ,'show_in_nav_menus'    => true
            ,'show_ui'              => true
            ,'query_var'            => true
            ,'labels'               => $labels
            ,'capabilities' => array(
                'manage_'.$current_user->user_login
            )
        );

        // Register
        register_taxonomy ( 
             $current_user->user_login
            ,array ( 'post', 'page' )
            ,$args
        ); 
        // Add to post type
        // you can even add your current user post type here
        register_taxonomy_for_object_type (
             $current_user->user_login
             ,array ( 'post', 'page', 'home_of_'.$current_user->user_login ) 
        );
    endif;
}
add_action( 'init', 'create_user_tax' );

Размещение проверки возможности (current_user_can) могло быть где-нибудь другим также. Зависит все от Ваших определенных потребностей. Только убедить это: Это примеры для руководства Вас на Вашем пути к решению. Надежда, которая помогает :)

1
19.02.2020, 22:01

это возможно с плагином s2member, бесплатная версия достаточна. Я создал клиентскую область, где у каждого клиента есть URL здесь существует видео учебное руководство: http://www.primothemes.com/forums/viewtopic.php?f=4&t=586&start=0&hilit=client+area

0
19.02.2020, 22:01

Пользовательский Плагин менеджера по Доступу сделает это для Вас, все другие подходы являются слишком сложными. UAM просто легок, группы установки, и присвойте группу своим подстраницам, готовым.

2
19.02.2020, 22:01

Теги

Похожие вопросы