Backend Frontend Template Pro wiki: Menú pro

Oct 10, 2023 | Backend Frontend Template Pro, Backend Frontend Template Pro: wiki, Plugin, WordPress

(Wiki página de Backend Frontend Template Pro: the WordPress Plugin Template)

Edita tu menú en la variable $this->admin_pages del archivo admin/class-your-plugin-admin.php

Diseñar un menú BFT se ve así: $this->admin_pages = [ “hello_world” => [ “page_title” => $this->__(“Hello world page”), “menu_title” => $this->__(“Hello world”), “file” => “your-plugin-admin-display-hello-world.php”, ], “blank_page” => [ “page_title” => $this->__(“Blank page”), “menu_title” => $this->__(“Blank page”), “file” => “bft-admin-display-blank-page-with-title.php”, ], ];

El menú BFT puede tener páginas hijas, ejemplo: $this->admin_pages = [ “hello_world” => [ “page_title” => $this->__(“Hello world page”), “menu_title” => $this->__(“Hello world”), “file” => “your-plugin-admin-display-hello-world.php”, “children” => [ “blank_page” => [ “page_title” => $this->__(“Blank page”), “menu_title” => $this->__(“Blank page”), “file” => “bft-admin-display-blank-page-with-title.php”, ], ] ], ];

Nota: los datos del array son expandidos por la función $this->admin_pages_prepare(), si haces un $this->debug_log_write($this->admin_pages) en una página: puedes ver el estado atual del array en el log de WordPress

Eplicación del menú BFT:

  1. Parámetros automáticos añadidos al array
    • id: la clave del array
    • is_child: añadido y true si es hija
    • page_parent: añadido con la clave del padre si es hija
    • ids_required_get_data: los datos GET encontrados dentro de los ids ‘ids_required’
    • ids_optional_get_data: los datos GET encontrados dentro de los ids ‘ids_optional’
    • ids_aux_required_get_data: los datos GET encontrados dentro de los ids ‘ids_aux_required’
    • ids_aux_optional_get_data: los datos GET encontrados dentro de los ids ‘ids_aux_optional’
    • ids_all: ‘ids_required’, ‘ids_optional’, ‘ids_aux_required’, ‘ids_aux_optional’ todos combinados, este orden es la prioridad para mantener los datos
    • ids_all_get_data: los datos GET encontrados dentro de los ids ‘ids_all’, usa la ‘key_final’ como ‘key’
    • ids_all_get_data_excluded_zeros: ids_all_get_data sin los ids con get data == ‘0’
    • ids_all_get_url: ids_all_get_data transformados en una cadena GET URL ‘&key=data’
    • ids_all_get_data_excluded_zeros: ids_all_get_url sin los ids con get data == ‘0’
    • ids_all_inverse: ids_all en orden inverso, ej:
      $page_data[“ids_all”] = [ “key_initial” =>”key_final” ] -> $page_data[“ids_all_inverse”] = [ “key_final” =>”key_initial” ]
    • ids_required_all: ‘ids_required’, ‘ids_aux_required’ todos combinados, este orden es la prioridad para mantener los datos
    • ids_required_all_get_data: los datos GET encontrados dentro de los ids ‘ids_required_all’, usa la ‘key_final’ como ‘key’
    • ids_required_all_get_data_excluded_zeros: ids_required_all_get_data sin los ids con get data == ‘0’
    • ids_optional_all: ‘ids_optional’, ‘ids_aux_optional’ todos combinados, este orden es la prioridad para mantener los datos
    • ids_optional_all_get_data: los datos GET encontrados dentro de los ids ‘ids_optional_all’, usa la ‘key_final’ como ‘key’
    • ids_principal_all: ‘ids_required’, ‘ids_optional’ todos combinados, este orden es la prioridad para mantener los datos
    • ids_principal_all_get_data: los datos GET encontrados dentro de los ids ‘ids_principal_all’, usa la ‘key_final’ como ‘key’
    • ids_aux_all: ‘ids_aux_required’, ‘ids_aux_optional’ todos combinados, este orden es la prioridad para mantener los datos
    • ids_aux_all_get_data: los datos GET encontrados dentro de los ids ‘ids_aux_all’, usa la ‘key_final’ como ‘key’
  2. Parámetros con datos por defecto si no están
    • page_title: título de la página, por defecto: $this->admin_pages_page_title_default
    • menu_title: título de la pestaña de la página, por defecto: $this->admin_pages_page_title_default
    • menu_slug: slug de la página, por defecto: clave de la página. El menú slug se cambiará a: $this->admin_pages_slug_name_prefix.”_”.menu_slug porque es necesario un nombre de página único entre los plugins
    • tab_show: si false no muestra la pestaña de la página, incluso si la página está seleccionada, por defecto: true
    • tabs_new_or_edit_on_url: true añade ‘&action=edit’ o ‘&action=new’ en el link de la pestaña. New si hay un id detectado en los datos GET, por defecto false
    • tabs_show_children: si false no muestra la primera línea de pestañas hijas de una página, por defecto true
    • function: la función para cuando una página se muestra, por defecto: $this->admin_pages_function_default
    • function_load: carga la función antes de que la página se muestre,por defecto: $this->admin_pages_function_load_default
    • file: el admin/partials archivo que se mostrará, default: $this->admin_pages_file_default (Si el archivo empieza con ‘bft-‘ el archivo se cargará de la carpeta admin/lib/BFT/partials
    • error_throw_what_do, es usado en error_throw, opciones:
      • show_error: muestra el error (opción por defecto)
      • show_error_and_die: muestra el error y para la ejecución
      • go_to_parent: va a la página padre y anota en los datos GET el error (sólo funciona si $triggered_on_function_load = true, porque en una función normal de WordPress causará el error: ‘Cannot modify header information – headers already sent’)
    • error_throw_file_change: cambia la opción de archivo si error_throw_what_do es activado, por defecto: false
    • capability, por defecto: ‘manage_options’, capacidades de WordPress: https://wordpress.org/support/article/roles-and-capabilities/
    • IDs: son arrays de datos con ‘name on the GET data’ => ‘id internal to use’, array vacío por defecto
      En los datos GET es necesario poner un id único, ejemplo: ‘book_id’, pero en la página/función quizás es necesitado como ‘id’, entonces usa: ‘book_id’ => ‘id’ Opciones:
      • ids_required (lanza un error si no se ha encontrado un GET id)
      • ids_optional
      • ids_aux_required (lanza un error si no se ha encontrado un GET id, para páginas con datos secundarios)
      • ids_aux_optional (para páginas con datos secundarios)
    • Example:
      “ids_optional” => [ “key_initial” => “key_final”, “‘key_get'” => “‘key_needed'”, “book_id” => “id”, ],
    • Nota: si es una página hija quizás habrán ids automáticos: if un padre tiene un id o id auxiliar que no se ha encontrado en la página hija, entonces el hijo tiene el id como un id opcional en ids_optional
  3. Functions disponibles listas para usar (puedes crear cualquier función qué necesites)
    • admin_menu_page_display: muestra la página seleccionada en ‘file’
    • admin_menu_page_table_display_first_menu_child: muestra una tabla con los datos del primer hijo y el formulario almacenado en $this->admin_forms[]
    • admin_menu_page_table_display: muestra una tabla con los datos de la página mostrada
    • admin_menu_admin_form_page_display: mostrar un formulario personalizado automático almacenado en $this->admin_forms[]
  4. Functions load disponibles listas para usar (puedes crear cualquier función qué necesites)
    • redirect_to_first_page_child: redirecciona a la primera página hija de la página actual (ejecuta admin_permission_check_and_ids_required_check_function_load first)
    • admin_permission_check_and_ids_required_check_function_load: comprueba los permisos de administración y comprueba los ids requeridos y opcionales especificados en la URL, tipos de ids princpiales y auxilizares seleccionados, preparado para ‘function_load’, ‘go_to_parent’ usaso si es necesario
    • ids_required_check_function_load: comprueba ids requeridos y opcionales de la página especificada en la URL, tipos de ids principales y auxiliares seleccionados, preparado para ‘function_load’, ‘go_to_parent’ usaso si es necesario
    • download_file_private: descargar archivo privado
    • custom_form_set_do_by_post: enviar un formulario para manipulación automatizada de datos
  5. Parámetros opcionales
    • admin_page_settings_id: para seleccionar la clave a usar en $this->admin_settings[], preparado parar usarse con la función $this->settings_section_form($this->admin_pages_data_get(“admin_page_settings_id”)), esa función es usada en “file” => “bft-admin-display-settings.php”,
    • iframe_url: la URL completa de dentro del iframe, para usar con “file” => “bft-admin-display-iframe.php”
    • iframe_admin_page_slug: el slug de dentro del iframe, el slug del iframe se cambiará a: $this->admin_pages_slug_name_prefix.”_”.menu_slug, para usar con “file” => “bft-admin-display-iframe.php”
    • file_aux_folder_includes: para utilizar una segunda ruta completa con la variable $file_aux_url (parametro ‘file’ genera la variable $file_url )
    • new_text: el texto del botón de nueva entrada, puede añadirse en el padre o en el hijo, la prioridad será en los datos del hijo, para usarse con la función admin_menu_page_table_display_first_menu_child() y archivo bft-admin-display-list-table.php
      Crea la variable $button_add y será finalmente usado en $this->html_button_action
      si new_text is boleano y true usará el texto: $this->__(“New”)
    • admin_forms_aux_id: para página con datos automáticos, usado en la función: admin_pages_data_title_from_admin_forms_aux()
      Muestra el nombre automático del formulario (datos column_title_name) antes de los datos como esto: Nombre automático | Título
      Para el nombre automático es usado el ids_required y ids_optional (sólo el primer ID encontardo), pero sólo es usado la key_inicial (la key_get)
    • children: array con las páginas hijas. Una página hija puede tener descendencia, el máximo de niveles es 5 contando la página padre. Hay un límite porque no es recursivo, eso mata el rendimiento del servidor
    • page_copy_of: copia los datos de una página.Sólo los datos no encontrado en la página, tampoco copia id, is_child, page_parent, menu_slug y children”)?>
  6. Tus propios parámetros
    • Puedes crear tu propio parámetros, después puedes acceder a la información desde una función o una página con:
      $variable_name = $this->admin_pages_data_get(“parametter_name”);Y si quieres puedes recuperar los datos de una página en concreto con $page_name, y recuperar todos los datos del array con $key = false
      $variable_name = $this->admin_pages_data_get($key = false, $page_name = NULL)
    • Puedes establecer tus propios parámetros por código con:
      $this->admin_pages_data_set($key, $data, $page_name = NULL)
  7. Cómo empezar
    • Usa los ejemplos del principio, la mayoría de las opciones no se necesitan inicialmente
    • Extepto todo el ‘id_required’/’id_optional’ parte, eso es importante, pero sólo para páginas hijas. Puedes ver ejemplos detallados en otras páginas donde se necesita, porque la idea es tener una página listado con todas las entradas, y entonces ver una simpre entrada en el hijo, ejemplo:
      $this->admin_pages = [ “books” => [ “page_title” => $this->__(“List with all the books”), “menu_title” => $this->__(“Books”), “function” => “admin_menu_page_table_display_first_menu_child”, “file” => “bft-admin-display-list-table.php”, “children” => [ “book” => [ “ids_required” => [ “book_id” => “id”, ], “admin_forms_id” => “books”, “page_title” => $this->__(“Book selected”), “menu_title” => $this->__(“Book”), “function” => “admin_menu_admin_form_page_display”, “file” => “bft-admin-display-form.php”, “function_load” => “custom_form_set_do_by_post”, ], ] ], ]; En este ejemplo rápido hay una página que muestra todos los libros: admin.php?page=your_plugin_books , y cada item/libro enlaza a admin.php?page=your_plugin_book&book_id=[id del libro] Y porque ‘book’ tiene ‘ids_required’, la página lanza error automáticamente si un dato GET requerido no es encontrado, book_id en este caso Un ejemplo complejo de pestañas anidadas: Esto es una parte del menú por defecto usado en BFT, más información en base de datos -> Manipulación de datos automatizada $this->admin_pages = [ “database” => [ “menu_title” => $this->__(“Database”), “page_title” => $this->__(“Database”), “file” => “bft-admin-display-menu-system.php”, “function_load” => “redirect_to_first_page_child”, “children” => [ “install_deinstall_upgrade_database_explication” => […], “automated_data_manipulation_explication” => [ “menu_title” => $this->__(“Automated data manipulation”), “page_title” => $this->__(“Data managed by BFT”), “file” => “bft-admin-display-automated-data-manipulation-system.php”, “children” => [ “automated_data_manipulation_courses” => […], “automated_data_manipulation_students” => […], “automated_data_manipulation_teachers” => [ “menu_title” => $this->__(“Teachers”), “page_title” => $this->__(“List of teachers”), “function” => “admin_menu_page_table_display_first_menu_child”, “file” => “bft-admin-display-list-table.php”, “children” => [ “automated_data_manipulation_teacher” => [ “ids_required” => [ “teacher_id” => “id”, ], “admin_forms_id” => “teachers”, “tabs_new_or_edit_on_url” => true, “menu_title” => $this->__(“Teacher”), “page_title” => $this->__(“Teacher form”), “function” => “admin_menu_admin_form_page_display”, “file” => “bft-admin-display-form.php”, “function_load” => “custom_form_set_do_by_post”, “new_text” => $this->__(“New teacher”), ], “automated_data_manipulation_teacher_notes” => [ “ids_required” => [ “teacher_id” => “teacher_id”, ], “ids_aux_required” => [ “teacher_id” => “id”, ], “admin_forms_aux_id” => “teachers”, “menu_title” => $this->__(“Teacher notes”), “page_title” => $this->__(“List of notes”), “function” => “admin_menu_page_table_display_first_menu_child”, “file” => “bft-admin-display-list-table.php”, “children” => [ “automated_data_manipulation_teacher_note” => [ “ids_required” => [ “note_id” => “id”, “teacher_id” => “teacher_id”, ], “admin_forms_id” => “teachers_notes”, “ids_aux_required” => [ “teacher_id” => “id”, ], “admin_forms_aux_id” => “teachers”, “tabs_new_or_edit_on_url” => true, “menu_title” => $this->__(“Teacher note”), “page_title” => $this->__(“Teacher note form”), “function” => “admin_menu_admin_form_page_display”, “file” => “bft-admin-display-form.php”, “function_load” => “custom_form_set_do_by_post”, “new_text” => $this->__(“New note”), ], ], ], ], ], ], ], ], ], ], ]; Eso genera este menú: Datos GET: admin.php?page=bft_pro_automated_data_manipulation_explication Backend Frontend Template Pro: menú anidado test 1 Datos GET: admin.php?page=bft_pro_automated_data_manipulation_teachersn Backend Frontend Template Pro: menú anidado test 2, listado de profesores Datos GET: admin.php?page=bft_pro_automated_data_manipulation_teacher&action=new&teacher_id=0 Backend Frontend Template Pro: menú anidado test 3, creando profesor Datos GET: admin.php?page=bft_pro_automated_data_manipulation_teacher&action=edit&teacher_id=1 Backend Frontend Template Pro: menú anidado test 4, profesor creado Datos GET: admin.php?page=bft_pro_automated_data_manipulation_teacher_notes&teacher_id=1 Backend Frontend Template Pro: menú anidado test 5, lista de notas del profesor creado Datos GET: admin.php?page=bft_pro_automated_data_manipulation_teacher_note&action=edit&note_id=1&teacher_id=1 Backend Frontend Template Pro: menú anidado test 6, nueva nota del profesor creado

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos Cookies propias y de terceros para mejorar nuestros servicios y para ofrecerte una mejor experiencia (por ejemplo, mostrando publicidad personalizada) mediante el análisis de tus hábitos de navegación (por ejemplo, páginas visitadas). Puedes aceptar todas las cookies pulsando el botón “Aceptar”. Para configurarlas, obtener más información o rechazar su uso, haz click AQUÍ

Los ajustes de cookies en esta web están configurados para «permitir las cookies» y ofrecerte la mejor experiencia de navegación posible. Si sigues usando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar», estarás dando tu consentimiento a esto.

Cerrar