(Wiki página de Backend Frontend Template Pro: the WordPress Plugin Template)
- Campos necesarios en la tabla de la base de datos Para mostrar y manipular los datos automáticamente necesitaremos unos pocos campos dedicados en una tabla
- Estado, tipo enumerado, nombre del campo decidido en $this->database_status_column_name, para las opciones del enumerado usa los datos almacenados en $this->database_status_option_active_name y $this->database_status_option_bin_name
- Tiempo de creación, tipo datetime, nombre del campo decidido en $this->database_datetime_created_name
- Tiempo de modificación, tipo datetime, nombre del campo decidido en $this->database_datetime_modified_name
- Tiemp ode eliminación (movido a la papelera), tipo datetime, nombre del campo decidido en $this->database_datetime_removed_name
- $this->admin_forms Los formularios son descritos en $this->admin_forms del archivo admin/class-your-plugin-admin.php, un formulario es la unicón de su tabla y su internalización Diseñar un formulario BFT se ve así: $this->admin_forms = [ “courses” => [ “table” => $wpdb->prefix.$this->plugin_slug.”_”.”courses”, “column_key” => “id”, “column_title_name” => “name_i18n”, “i18n_foreign_key” => “course_id”, “columns” => [ $this->database_status_column_name => [ “label” => $this->database_status_column_text, “type” => “select”, “options” => $this->database_status_options, ], “id” => [ “label” => $this->__(“Nº”), “placeholder” => “”, “type” => “text”, “display_table” => true, “readonly” => true, ], $this->database_datetime_created_name => [ “label” => $this->database_datetime_created_text, “placeholder” => “”, “type” => “datetime”, “display_table” => false, “readonly” => true, ], $this->database_datetime_modified_name => [ “label” => $this->database_datetime_modified_text, “placeholder” => “”, “type” => “datetime”, “display_table” => false, “readonly” => true, “only_in_active” => true, ], $this->database_datetime_removed_name => [ “label” => $this->database_datetime_removed_text, “placeholder” => “”, “type” => “datetime”, “display_table” => true, “readonly” => true, “only_in_removed” => true, ], “hours” => [ “label” => $this->__(“Total hours of the course”), “placeholder” => $this->__(“Hours”), “type” => “number”, “i18n” => false, “readonly” => true, “display_table” => true, ], “name_i18n” => [ “label” => $this->__(“Course name”), “placeholder” => $this->__(“Name”), “type” => “text”, “i18n” => true, “display_table” => true, ], “image” => [ “label” => $this->__(“Course logo”), “placeholder” => $this->__(“Image”), “type” => “image”, “i18n” => true, “display_table” => true, ], “order” => [ “label” => $this->__(“Order”), “placeholder” => $this->__(“Order, lowest number first”), “type” => “text”, “i18n” => false, “display_table” => true, ], “teacher_id” => [ “label” => $this->__(“Teacher”), “placeholder” => “”, “type” => “select”, “foreign_key” => “teachers”, “display_table” => true, “value_empty_is_null” => true, “foreign_key_null_text” => $this->__(“Teacher not selected”), ], “students_courses” => [ “label” => $this->__(“Enrolled students”), “placeholder” => $this->__(“Students”), “type” => “many_to_many_relationship”, //Display table doesn’t work for now with many_to_many_relationship “display_table” => false, “search” => true, ], ], ], ]; Eplicación del menú BFT:
- Parámetros del formulario
- key: internal id del formulario
- table: nombre de la tabla
- column_key: nombre de la clave (‘id’ normalmente)
- column_title_name: campo donde se guarda el nombre de la fila (el nombre de un usuario, el nombre de un libro, etc.)
- i18n_foreign_key: clave foránea de la tabla de internalización
- columns: lista de campos
- Parámetro opcional de los campos
- label: texto a mostrar en la administración. Por defecto: “”
- placeholder: placeholder si el tipo de dato puede tener placeholder
- display_table: muestra el campo en la tabla-lista. Nota: display_table no funciona por ahora con campos many_to_many_relationship
- i18n: si los datos del campo están almacenados en una tabla de internalización
- only_in_active: muestra el campo sólo si lso datos están activos
- only_in_removed: muestra el campo sólo si los datos están la papelera
- readonly: campo de sólo lectura, para la columna clave por ejemplo
- value_from_get: coge el dato de los datos GET en la URL si no hay dato guardado de este campo. Para datos dependientes, ejemplo: notas de profesores, una nueva nota necesita saber el id del profesor de la nota
- value_empty_is_null: un dato vacío se transformará a NULL (el dato NULL siempre se mostrará como value=”)
- foreign_key: guarda una clave foránea
- foreign_key_null_text: texto para mostrar cuando NULL es guardado en una clave foránea con NULL opcional
- type: las opciones de inputs de BFT y además la opción ‘many_to_many_relationship’, es un select para enlazar la relación. ‘text’ por defecto
- many_to_many_relationship: usa los datos guardados en $this->admin_forms_many_to_many_relationships
“type” => “many_to_many_relationship”, “search” => true, //Display table doesn’t work for now with many_to_many_relationship “display_table” => false, - text: input text
“type” => “select”, - textarea: input textarea, rows y cols son opcionales
“type” => “textarea”, “rows” => 10, “cols” => 50, - number: input number, args opcionales: min, max y step. Por defecto en step: 1, alternativo: ‘decimal’ o ‘decimals’, esta opción calculate los steps necesarios
“type” => “number”, “min” => 1, “max” => 99999, “step” => 1, - select: input select, args tiene que tener ‘options’, guarda una cadena con las opciones seleccionadas, ej: ‘en,es’, opcional args: search (false por defecto), multiple (false por defecto)
“type” => “select”, “search” => true, “options” => [ “zh” => $this->__(“Chinesse”), “en” => $this->__(“English”), “es” => $this->__(“Spanish”), ], “type” => “select”, “multiple” => true, “search” => true, “options” => [ “zh” => $this->__(“Chinesse”), “en” => $this->__(“English”), “es” => $this->__(“Spanish”), ], - date: input text con un calendario, la fecha será en estilo MySQL ‘2023-01-01’
“type” => “date”, - checkbox, single y multiple, en multiple es necesario ‘options’ en args
“type” => “checkbox”, “multiple” => false, “type” => “checkbox”, “multiple” => true, “options” => [ “zh” => $this->__(“Chinesse”), “en” => $this->__(“English”), “es” => $this->__(“Spanish”), ], - radio: radio buttons, guarda cadena con las opciones seleccionadas, ej: ‘en, es’, requiere ‘options’
“type” => “radio”, “multiple” => true, “options” => [ “zh” => $this->__(“Chinesse”), “en” => $this->__(“English”), “es” => $this->__(“Spanish”), ], - image: guarda si es necesario y selecciona una imagen de la Biblioteca de Medios de WordPress, el dato guardado es el ID del archivo. Una vez seleccionado muestra la imagen
“type” => “image”, - file: igual que con la el tipo imagen, pero no intenta mostrar una imagen, sólo muestra un botón de descarga
“type” => “file”, - empty: un input comentado, imprime ‘<!– id=”‘.$id_setting.'” empty –>’
“type” => “empty”,
- many_to_many_relationship: usa los datos guardados en $this->admin_forms_many_to_many_relationships
- Parámetros del formulario
- $this->admin_forms_many_to_many_relationships Este formulario describe una relación mucho a mucho entre dos tablas
- Parámetros del formulario
- key: id interno de la relación mucho a mucho
- table: nombre de la tabla
- forms: array de los dos formulario de la relación
- Parámetro de los dos campos relacionados
- key: id del formulario
- value: clave foránea usado en la tabla
- Parámetros del formulario
- $this->admin_pages BFT necesita saber qué function y function_load usar en la página. El sistema también necesita saber cómo leer los datos GET de la URL Hay páginas de listados y páginas de formularios. Es posible anidar páginas de listas para usar los datos del formulario anterior, por ejemplo: notas del profesor, primero selecciona un profesor (o crea uno nuevo), entonces vas a las notas de ese profesor La explicación de $this->admin_pages está en la pestaña ‘Menu’, allí hay un ejemplo completo de uso
- Mostrar un listado
- “function” => “admin_menu_page_table_display_first_menu_child”,
- “file” => “bft-admin-display-list-table.php”,
- Mostrar un formulario
- “ids_required” => [“get_data” => “id_data”],
“ids_required” => [ “teacher_id” => “id”, ], - “admin_forms_id” => “form_key”,
- “function” => “admin_menu_admin_form_page_display”,
- “file” => “bft-admin-display-form.php”,
- “function_load” => “custom_form_set_do_by_post”,
- “tabs_new_or_edit_on_url” => true,
- “new_text” => “New entry text”,
- Anidar un formulario
- Mostrar un listado
- “ids_required” => [“get_data” => “id_data”], es igual que el formulario padre
“ids_required” => [ “teacher_id” => “teacher_id”, ], - “ids_aux_required” => [“get_data” => “id_data”], opcional, funciona con ids_aux_required
- “admin_forms_aux_id” => “form_key”, opcional
- “function” => “admin_menu_page_table_display_first_menu_child”,
- “file” => “bft-admin-display-list-table.php”,
- Mostrar un formulario
- “ids_required” => [“get_data” => “id_data”], es igual que el formulario padre
- “ids_required” => [“get_data” => “id_data”],
“ids_required” => [ “note_id” => “id”, “teacher_id” => “teacher_id”, ], - “admin_forms_id” => “form_key”,
- “ids_aux_required” => [“get_data” => “id_data”], opcional, funciona con ids_aux_required
- “admin_forms_aux_id” => “form_key”, opcional
- “function” => “admin_menu_admin_form_page_display”,
- “file” => “bft-admin-display-form.php”,
- “function_load” => “custom_form_set_do_by_post”,
- “tabs_new_or_edit_on_url” => true,
- “new_text” => “New entry text”,


0 comentarios