Então, eu estou tendo alguns problemas com isso e não consigo entender o porquê. Eu só preciso de uma função personalizada que possa acessar o blog no back-end.
blog
Adicionei um novo tipo de postagem com um tipo de capacidade e uma nova função de usuário com todas as letras maiúsculas, permitindo que os usuários de acesso administrativo adicionem / editem o tipo de postagem personalizado. Isso funciona para administradores e eles podem acessar o tipo de postagem no back-end. No entanto, os usuários da minha função personalizada não conseguem acessar o back-end.
Args do tipo de postagem da nota
"capability_type" => 'blog',
"map_meta_cap" => true,
Registrar função
function add_blog_manager_role(){
add_role(
'blog_manager',
'Blog Manager',
array(
'read' => true,
'edit_posts' => false,
'delete_posts' => false,
'publish_posts' => false,
'upload_files' => true
)
);
}
add_action( 'admin_init', 'add_blog_manager_role', 4 );
Adicionar Caps
function add_blog_role_caps() {
$roles = array('blog_manager', 'editor','administrator');
foreach($roles as $the_role) {
$role = get_role($the_role);
$role->add_cap( 'read' );
$role->add_cap( 'read_blog');
$role->add_cap( 'read_private_blog' );
$role->add_cap( 'edit_blog' );
$role->add_cap( 'edit_others_blog' );
$role->add_cap( 'edit_published_blog' );
$role->add_cap( 'publish_blog' );
$role->add_cap( 'delete_others_blog' );
$role->add_cap( 'delete_private_blog' );
$role->add_cap( 'delete_published_blog' );
}
}
add_action('admin_init', 'add_blog_role_caps', 5 );
Eu tenho pesquisado freneticamente tentando encontrar a causa disso. Eu tentei com maiúsculas plurais, não plurais, tentei adicionar recursos ao args do tipo post. No entanto, nunca sou capaz de entrar no back-end. Não tenho nenhum outro código no tema que possa expulsar os usuários do administrador (removi meu próprio código que os expulsou durante o teste)
Editar Aqui você pode ver um despejo dos recursos blog_manager do banco de dados, ainda resta bastante BS de teste lá dentro, mas isso não deve impedir que eles consigam acessar o que eu sei.
'blog_manager' => array (
'name' => 'Blog Manager',
'capabilities' => array (
'read' => true,
'edit_posts' => false,
'delete_posts' => false,
'publish_posts' => false,
'upload_files' => true,
'read_blog' => true,
'read_private_blog' => true,
'edit_blog' => true,
'edit_others_blog' => true,
'edit_published_blog' => true,
'publish_blog' => true,
'delete_others_blog' => true,
'delete_private_blog' => true,
'delete_published_blog' => true,
'blog' => true,
'read_private_blogs' => true,
'edit_blogs' => true,
'edit_others_blogs' => true,
'edit_published_blogs' => true,
'publish_blogs' => true,
'delete_others_blogs' => true,
'delete_private_blogs' => true,
'delete_published_blogs' => true,
'delete_blogs' => true,
'delete_blog' => true,
),
)
fonte
Respostas:
É difícil solucionar problemas do código acima, porque é apenas uma parte do código real, mas aqui está o plug-in mínimo necessário para registrar um tipo de postagem personalizado (chamado Exemplo) e uma função personalizada (Gerenciador de Blog) que tem acesso ao tipo de postagem personalizada de Exemplo .
Isso pode ser usado como parte do arquivo functions.php de um tema também. Basta usar os ganchos de ativação e desativação de tema.
fonte
Se você concorda com o plugin, pode usar o plugin velow.
https://wordpress.org/plugins/capability-manager-enhanced/
fonte