Ampliar el metabox del curso
Añadir tus propios campos a los editores de curso y de lección.
El filtro
add_filter( 'pom_lms_course_metas', 'my_course_fields' );
function my_course_fields( array $metas ): array {
// Add or adjust field definitions.
return $metas;
}
pom_lms_course_metas recibe la definición completa de los campos del editor de curso y de lección — las pestañas, sus grupos y los campos que contienen — y debe devolverla.
Qué contiene la estructura
La definición cubre ambos tipos de contenido. Los cursos tienen las pestañas Configuration, Sections y Lessons; las lecciones tienen su propio conjunto de campos. Cada campo lleva una etiqueta, un tipo y lo que ese tipo necesite — opciones para un select, una descripción, si el valor se guarda como su propio post meta.
Añade a la estructura en lugar de reconstruirla. Devolver una estructura que omita los campos propios del plugin los elimina del editor, que es como un sitio pierde su configuración de acceso.
Tipos de campo
Los campos usan los tipos de formulario del tema — text, select, toggle, rich text, repetidores y el resto — de modo que todo lo que los demás metaboxes del tema pueden renderizar está disponible aquí.
Imita un campo existente del mismo tipo en lugar de inventar una forma: copia cómo define el plugin un select y cambia la etiqueta, el nombre y las opciones.
Nomenclatura
Añade a cada campo que crees un prefijo propio. pom_lms_ es el espacio de nombres del plugin, y una colisión significa que uno de los dos sobrescribe silenciosamente el valor del otro.
Qué añadir aquí, y qué no
Buenos candidatos — cualquier cosa que pertenezca al curso como algo que vendes o enseñas:
- Un nivel de dificultad o una duración para las tarjetas de tu catálogo.
- Un instructor distinto del autor de WordPress.
- Un código para tus propios informes.
- Enlaces a cursos relacionados.
Malos candidatos — cualquier cosa que decida el acceso:
No añadas un campo que tu propio código trate después como una condición de acceso. La precedencia de acceso vive en los helpers, y un segundo mecanismo fuera de ellos es exactamente la situación que filtra contenido cuando cambia el orden. Si necesitas una condición de acceso distinta, exprésala como una regla de permiso.
Leer tus valores
$metas = pom_lms_get_post_metas( $course_id );
$value = $metas['my_prefix_difficulty'] ?? '';
Los campos declarados para guardarse como su propio post meta se pueden leer además con get_post_meta(), que es lo que quieres para cualquier cosa que necesites consultar u ordenar.
Mostrarlos
El editor guarda tu campo; nada lo muestra. Renderízalo desde tu tema, usando los hooks de plantilla — consulta Integración de plantillas.
Orden y colocación
Los campos aparecen donde los coloques en la estructura. Añadir a un grupo existente coloca tu campo entre los del plugin; añadir un grupo propio lo mantiene separado, lo que suele ser más claro para los editores.
Da a cualquier grupo propio una etiqueta que nombre tu integración, para que un editor que se pregunte de dónde viene un campo pueda averiguarlo.
Compatibilidad
El filtro es estable. El contenido exacto de la estructura no lo es — las nuevas versiones añaden campos y pueden reorganizar grupos.
Escribe tu filtro de modo que sobreviva a eso: localiza lo que necesitas por clave, añade lo que necesitas y devuelve el array. El código que asume un número fijo de pestañas, o un campo en un índice concreto, se romperá.