it-swarm-pt.tech

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

Usamos o wordpress como um CMS e gostaríamos muito de permitir 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?

No momento, estou usando o plug-in Members para fazer outras informações baseadas em permissão, por isso seria ótimo se uma solução pudesse aumentá-la 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 home page.

9
Tom Wright

Desculpe por fazer isso, mas eu tropecei com a resposta nos fóruns wordpress .

Acontece que 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 qualquer outra coisa:

  1. Dê a eles uma função WordPress do Assinante
  2. Gerenciar> Páginas> Editar sua página
  3. Expanda a guia "Editores" em "Opções avançadas"
  4. Marque a caixa de seleção não vinculada à esquerda do nome do seu 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)
  5. Salvar a página
4
Tom Wright

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 site 'sub', ou use algo como o BuddyPress ou o Mingle que tenha um recurso de perfil de usuário.

5
Norcross

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 http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/

3
Bainternet

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.

2
BUGHUNTER

O sollution implica que você desativou a edição de tipos de postagens "normais" (post, página).

É não tão difícil quanto você possa acreditar. O 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 apenas as postagens marcadas com os termos das taxonomias dos usuários, mas isso precisaria de uma caixa meta-meta com os termos de taxonomia dos usuários. A condição seria a mesma: 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 ajuda :)

1
kaiser

Eu usaria o Capability Manager ou verificar funções e recursos no codex para fazer isso.

1
Ben West

isso é possível com o plugin s2member, a versão gratuita é suficiente. Eu criei uma área de cliente onde cada cliente tem uma URL, há um tutorial em vídeo aqui: http://www.primothemes.com/forums/viewtopic.php?f=4&t=586&start=0&hilit=client+area

0
paul

Eu fiz algo semelhante com "membros", um tipo de postagem personalizada 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 que é possível para conectar-se ao processo de inscrição, então suponho que seria possível criar automaticamente uma página/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. Provavelmente, você também pode adicionar um redirecionamento na inscrição para que os novos membros sejam redirecionados para a página deles (o que, suponho, poderia ter algum conteúdo padrão).

Vou ver se consigo encontrar esse segmento de suporte buddypress.

Adendo - há um erro no seletor de autores no campo de publicação 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 eu não acho que tenha sido aplicado ao núcleo ainda.

0
user2789