Existe uma maneira (plugin?) de restringir um usuário a editar apenas uma página?

9

Usamos o wordpress como um CMS e gostaríamos muito que os usuários tivessem uma "homepage". Idealmente, eles seriam impedidos de invadir todo o site.

Existe uma maneira simples de limitar os usuários a editar direitos em uma única página?

Atualmente, estou usando o plug-in de membros para fazer outras informações baseadas em permissão , então seria ótimo se uma solução pudesse aumentar isso ou substituí-la completamente.

Pontos de bônus para criação automática de uma página inicial quando um novo usuário é criado.

ATUALIZAÇÕES: Devo esclarecer que essas páginas precisam estar confinadas a uma área específica do site (ou seja, todas as crianças da mesma página). Além disso, depois de falar com alguns usuários, parece que eles acham útil criar ramificações de subpáginas a partir de sua página inicial.

    
por Tom Wright 13.09.2010 / 12:32

8 respostas

4

Desculpe fazer isso, mas me deparei com a resposta nos fóruns do wordpress .

Acontece que o Role Scoper faz isso muito bem. O autor desse post no fórum disse que é melhor:

  

Para permitir que um usuário edite uma página específica, mas não mais:

     
  1. Dê a eles uma função WordPress do Assinante
  2.   
  3. Gerenciar > Páginas > Edite sua página
  4.   
  5. Expanda a guia "Editores" em "Opções avançadas"
  6.   
  7. Marque a caixa de seleção não vinculada à esquerda do nome do usuário (se as páginas filhas forem criadas, marque também a caixa de seleção {[]}, que atribui a função a todas as páginas filhas atuais ou futuras)
  8.   
  9. Salvar a página
  10.   
    
por Tom Wright 29.01.2011 / 13:18
5

Uma instalação básica do WordPress provavelmente não fará o que você quer. Você pode configurar uma instância de vários sites e permitir que os usuários tenham seu próprio 'sub' site, ou use algo como BuddyPress ou Mingle que tenha um recurso de perfil de usuário.

    
por Norcross 14.09.2010 / 23:15
3

Eu enfrentei a mesma situação que você e o que fiz foi criar um tipo de post personalizado chamado "homepage" e também criei o plug-in "Limites de criação de postagens da Bainternet" para limitar a criação de cada tipo de post por usuário. Experimente enlace

    
por Bainternet 29.01.2011 / 12:59
2

O Plugin do User Access Manager fará isso para você, todas as outras abordagens são muito complicadas. O UAM é apenas fácil, configure grupos e atribua o grupo às suas subpáginas, pronto.

    
por BUGHUNTER 02.08.2012 / 22:46
1

Eu usaria o Gerente de recursos ou conferiria papéis e recursos no codex para fazer isso.

    
por Ben West 14.09.2010 / 00:18
1

O sollution implica que você tenha desativado a edição de tipos de postagens "normais" (post, page).

Não é tão difícil quanto você pode acreditar. A chave é o nome de login do usuário . O mesmo poderia ser feito com taxonomias ou mesmo termos.

Veja o seguinte (também há um exemplo para uma consulta):

// 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

Com as taxonomias, isso faria mais sentido, porque você poderia consultar somente as postagens marcadas com os termos das taxonomias dos usuários, mas isso precisaria de uma caixa de meta-postagem com os termos de taxonomia dos usuários. A condição seria a mesma: o nome de login do usuário e você adicionaria apenas a taxonomia:

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' );

O posicionamento da verificação de capacidade (current_user_can) pode estar em outro lugar também. Depende de todas as suas necessidades específicas. Só para ter certeza disso: estes são exemplos para guiá-lo em seu caminho para uma solução. Espero que ajude :)

    
por kaiser 04.02.2011 / 01:59
0

Eu fiz algo parecido com "membros", um tipo de postagem personalizado e uma atribuição manual de direitos de autor a um membro específico, já que é um site de grupo pequeno, mas lembro de ler em um tópico de suporte de imprensa amigo é possível conectar-se ao processo de inscrição, portanto, suponho que seria possível criar automaticamente uma página / um tipo de postagem personalizado por usuário na inscrição e atribuir essa página específica ao membro recém-criado como página inicial. Eu também adicionei o editor front-end do Scribu e bloqueei o backend para os membros que não são administradores. Você provavelmente também pode adicionar um redirecionamento na inscrição para que novos membros sejam redirecionados para a página deles (o que, suponho, poderia ter algum conteúdo padrão).

Verei se consigo encontrar esse segmento de suporte buddypress.

Adendo - há um bug no seletor de autores no campo de postagem de edição. Atualmente, ele não usa o sistema de permissão padrão, o que pode dificultar a solução dos membros (embora provavelmente funcione se o autor for atribuído na criação de páginas). Existe um patch no trac, mas não acho que tenha sido aplicado ao núcleo ainda.

    
por user2789 31.01.2011 / 07:32
0

isso é possível com o plugin s2member, a versão gratuita é suficiente. Eu criei uma área de cliente onde cada cliente tem um URL há um tutorial em vídeo aqui: enlace

    
por paul 01.02.2011 / 10:50