Pregunta sobre Developing with WordPress de Wordpress:

Rol personalizado con add_role

Un usuario preguntó 👇

Hola,

Quiero agregar un rol personalizado llamado ‘custom_editor’. Este rol junto con un editor normal debería permitir la edición de opciones de temas. Pero este rol no debe crearse ni agregarse, a menos que mi tema se ponga en acción.

Entonces, al principio, en las funciones adjuntas a ‘after_setup_theme’ In put there

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

Tiene el potencial y puedo aplicarlo a los usuarios. Pero un usuario con esta capacidad no puede editar las opciones del tema.

Si edito la capacidad del editor en su lugar

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

luego, todos los usuarios con las capacidades de ‘editor’ pueden editar las opciones del tema.

¿Qué estoy haciendo mal?

Este tema fue modificado hace 3 años, 1 mes por.

(@bcworkz)

Hace 3 años, 1 mes

Probé su código add_role () en mi sitio y un usuario con ese rol podría editar las opciones del tema. Este usuario usó la personalización para cambiar veinte opciones de tema sin ninguna duda. ¿Así es como configura las opciones de su tema? Con la personalización, puede agregar configuraciones que requieran cualquier competencia que necesite, por lo que ‘edit_theme_options’ puede no ser suficiente para su configuración. Como agregar páginas de administración.

Lanzador de hilos

(@tiburón azul)

Hace 3 años, 1 mes

Gracias por su respuesta.

Estaba adivinando, llamar a algo en el orden de mis funciones no es correcto. Estoy totalmente de acuerdo contigo, si ambas formas no funcionan. Dado que el rol existente con ‘add_cap’ funciona perfectamente, todavía existen algunas dudas.

¿Puede proporcionar la función completa donde agregó ‘add_role’. Verificaría doulbe si hago la llamada a ‘add_role’ en la ubicación correcta.

(@bcworkz)

Hace 3 años, 1 mes

Agregué su código de revocación a la acción «init» como prueba rápida. Esta sería la forma incorrecta de agregar un nuevo rol. Hay roles continuos, no tiene sentido agregar el mismo rol a cada solicitud, como es el caso del gancho «init». Es mejor agregar roles al código que se ejecuta una vez y está listo, como el enlace de activación para un plugin o tema.

El pedido no parece demasiado grande al final. Incluso si es «incorrecto» la primera vez, porque persiste, se aplicaría a aplicaciones posteriores. Sin embargo, hay una advertencia importante. Si lo agrega demasiado pronto, antes de que los roles se carguen desde la SS, llamar a add_role () no tendría ningún efecto. Si llama a add_role () directamente desde el código del plugin sin agregar la llamada a un gancho más tarde, sería prematuro. “Init” llegaría bastante tarde, pero como se mencionó, es el gancho equivocado. Los ganchos recomendados son plugins o ganchos de activación de temas.

Lanzador de hilos

(@tiburón azul)

Hace 3 años, 1 mes

Seguí tus sugerencias y creé una función de inicio, que está adjunta a ‘load-theme.php’. Ahora, la función solo se proporciona cuando cambia de tema. Así que creo que este es el lugar correcto, ya que add_role no siempre se llama.

Pero todavía tenía la misma pregunta, así que imprimí los privilegios del nuevo rol

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

No se incluyó la capacidad ‘edit_theme_options’. Entonces me di cuenta de que faltaba una coma al final de mi código inicial. Así que en vez 'upload_files' => true, estaba 'upload_files' => true. Y ahora, después de esta molestia, funciona como se esperaba. 🙂

Gracias por tu ayuda.

Esta respuesta fue modificada hace 3 años, hace un mes por. Esta respuesta fue modificada hace 3 años, hace un mes por.

(@bcworkz)

Hace 3 años, 1 mes

De nada. Si upload_files es el último elemento en una declaración de edición, la coma terminal es opcional, por lo que realmente no explica sus comentarios. Pero si tiene su rol personalizado en el trabajo, ¿a quién le importa? ¡Funciona! 🙂

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada.