Pergunta sobre o desenvolvimento com WordPress do WordPress: função personalizada com add_role

Um usuário perguntou ?

Olá,

Quero adicionar uma função personalizada chamada ‘custom_editor’. Esta função junto com um editor normal deve permitir a edição de opções de tema. Mas esse papel não deve ser criado ou adicionado, a menos que meu tema seja colocado em ação.

Então, a princípio, nas funções anexadas a ‘after_setup_theme’, coloque lá

add_role(	'custom_editor',
		'Erweiterter Redakteuer',
		array(
			// Additional Capabilities
			'edit_theme_options' => true,
			// Editor Capabilities
			'delete_others_pages' => true,
			'delete_others_posts' => true,
			'delete_pages' => true,
			'delete_posts' => true,
			'delete_private_pages' => true,
			'delete_private_posts' => true,
			'delete_published_pages' => true,
			'delete_published_posts' => true,
			'edit_others_pages' => true,
			'edit_others_posts' => true,
			'edit_pages' => true,
			'edit_posts' => true,
			'edit_private_pages' => true,
			'edit_private_posts' => true,
			'edit_published_pages' => true,
			'edit_published_posts' => true,
			'manage_categories' => true,
			'manage_links' => true,
			'moderate_comments' => true,
			'publish_pages' => true,
			'publish_posts' => true,
			'read' => true,
			'read_private_pages' => true,
			'read_private_posts' => true,
			'unfiltered_html' => true,
			'upload_files' => true
		)
	);

Tem o potencial e posso aplicá-lo aos usuários. Mas um usuário com essa habilidade não pode editar as opções do tema.

Se eu editar a habilidade do editor

$editor = get_role( 'editor' );
$editor->add_cap( 'edit_theme_options' );

então todos os usuários com recursos de ‘editor’ podem editar as opções do tema.

O que estou fazendo de errado?

Este tópico foi modificado 3 anos, 1 mês atrás por.

(@bcworkz)

3 anos, 1 mês atrás

Eu tentei seu código add_role() no meu site e um usuário com essa função poderia editar as opções do tema. Este usuário usou a personalização para alterar vinte opções de tema sem qualquer hesitação. É assim que você define suas opções de tema? Com a personalização, você pode adicionar configurações que exigem qualquer proficiência necessária, portanto, ‘edit_theme_options’ pode não ser suficiente para sua configuração. Como adicionar páginas de administração

lançador de tópicos

(@Tubarão Azul)

3 anos, 1 mês atrás

Obrigado pela sua resposta.

Eu estava supondo, chamar algo na ordem das minhas funções não está correto. Concordo totalmente com você, se as duas formas não funcionarem. Como a função existente com ‘add_cap’ funciona perfeitamente, ainda existem algumas dúvidas.

Você pode fornecer a função completa onde você adicionou ‘add_role’. Gostaria de verificar se faço a chamada para ‘add_role’ no local correto.

(@bcworkz)

3 anos, 1 mês atrás

Adicionei seu código de revogação à ação “init” como um teste rápido. Esta seria a maneira errada de adicionar uma nova função. Existem papéis contínuos, não faz sentido adicionar o mesmo papel a cada solicitação, como é o caso do gancho “init”. É melhor adicionar funções ao código que é executado uma vez e pronto, como o link de ativação de um plugin ou tema.

A ordem não parece muito grande no final. Mesmo que seja “errado” na primeira vez, porque persiste, se aplicaria a aplicativos posteriores. No entanto, há uma ressalva importante. Se você adicioná-lo muito cedo, antes que as funções sejam carregadas do SS, chamar add_role() não terá efeito. Se você chamar add_role() diretamente do código do plugin sem adicionar a chamada a um gancho posteriormente, seria prematuro. “Init” seria muito tarde, mas como mencionado, é o gancho errado. Ganchos recomendados são plugins ou ganchos de ativação de tema.

lançador de tópicos

(@Tubarão Azul)

3 anos, 1 mês atrás

Segui suas sugestões e criei uma função de inicialização, que está anexada a ‘load-theme.php’. Agora, o recurso só é fornecido quando você alterna os temas. Então acho que este é o lugar certo, já que add_role nem sempre é chamado.

Mas eu ainda tinha a mesma pergunta, então imprimi os privilégios da nova função

	$custom_editor = get_role( 'custom_editor' );
	$custom_editor->add_cap( 'edit_theme_options' );
	print_r($custom_editor);

O recurso ‘edit_theme_options’ não foi incluído. Então percebi que estava faltando uma vírgula no final do meu código inicial. então em vez disso 'upload_files' => true, Eu fui 'upload_files' => true. E agora depois desse incômodo funciona como esperado. ?

Obrigado pela ajuda.

Esta resposta foi modificada há 3 anos, um mês atrás por. Esta resposta foi modificada há 3 anos, um mês atrás por.

(@bcworkz)

3 anos, 1 mês atrás

De nada. Se upload_files for o último elemento em uma instrução de edição, a vírgula à direita é opcional, portanto, não explica realmente seus comentários. Mas se você tem sua função personalizada no trabalho, quem se importa? Funciona! ?

Isto foi útil?

0 / 0

Deixe uma resposta 0

O seu endereço de email não será publicado. Campos obrigatórios são marcados *