Crea una extensión personalizada con la API de desarrollador de BEAR
La funcionalidad de una extensión se puede presentar en pestañas: pestañas superiores y pestañas básicas, o sin ninguna pestaña, como 'calculator' por ejemplo. Veamos la extensión más simple, Info:
- Su carpeta se llama 'info'
- Dentro de la carpeta 'info' debe haber: info.php, views/panel.php, js/info.js, css/info.css y también puede haber una carpeta img si es necesario
- info.php tiene dentro una clase PHP como WOOBE_INFO que extiende la clase WOOBE_EXT
- en la clase WOOBE_INFO debe definirse la variable protegida $slug con el valor 'info'
- en el constructor de la clase WOOBE_INFO debe definirse el siguiente código para crear pestañas:
Para crear pestañas en el slider superior (donde están filter, bulk, export) el código debe ser:$this->add_tab($this->slug, 'panel', __('Help', 'woocommerce-bulk-editor')); add_action('woobe_ext_panel_' . $this->slug, array($this, 'woobe_ext_panel'), 1);
Mira de cerca el código para ver la diferencia: panel -> top_panel; woobe_ext_panel_ -> woobe_ext_top_panel_$this->add_tab($this->slug, 'top_panel', __('Help', 'woocommerce-bulk-editor')); add_action('woobe_ext_top_panel_' . $this->slug, array($this, 'woobe_ext_panel'), 1); - Si necesitamos usar algún js y css en nuestra extensión, escribe la función woobe_ext_scripts:
Este código incluirá los estilos de nuestra extensión y las futuras acciones jspublic function woobe_ext_scripts() { wp_enqueue_script('woobe_ext_' . $this->slug, $this->get_ext_link() . 'assets/js/' . $this->slug . '.js'); wp_enqueue_style('woobe_ext_' . $this->slug, $this->get_ext_link() . 'assets/css/' . $this->slug . '.css'); ?> <script> lang.<?php echo $this->slug ?> = {}; lang.<?php echo $this->slug ?>.example= "<?php _e('Text example', 'woocommerce-bulk-editor') ?>"; </script> <?php } - La función woobe_ext_panel mostrará cualquier formulario que necesitemos ver en nuestra aplicación. Por supuesto, mostrará el código HTML que escribas en el archivo views/panel.php, por ejemplo cualquier popup ahí
- Así que ahora tenemos la aplicación más simple posible de crear. Para escribir tu propia lógica necesitas ver el código de las extensiones que puedes descargar en esta página como ejemplos, o ver las extensiones nativas de WOOBE en la carpeta wp-content\plugins\woocommerce-bulk-editor\ext
- ATENCIÓN: para extensiones externas debe definirse la variable protegida $is con el valor 'external'

Algunas acciones:
- woobe_adv_panel_buttons_end - añadirá cualquier html al final del panel de herramientas en las pestañas del Products Editor, mira el ejemplo en la extensión 'bulk'
- woobe_adv_panel_buttons - añadirá cualquier html al principio del panel de herramientas en las pestañas del Products Editor, mira el ejemplo en la extensión 'bulk'
- woobe_page_end - con este hook puedes renderizar cualquier elemento html adicional que necesites para tu aplicación, mira como ejemplo la extensión calculator
- woobe_before_update_page_field - hook que se puede ejecutar antes de actualizar un campo de producto: models/products.php
- woobe_after_update_page_field - hook que se puede ejecutar después de actualizar un campo de producto: models/products.php
add_action('woobe_after_update_page_field', function($product_id, $product, $field_key, $value, $field_type) { //do smth here }); - woobe_bulk_started - hook antes de que empiece la edición masiva: \ext\bulk\bulk.php
- woobe_bulk_going - hook mientras avanza la edición masiva: \ext\bulk\bulk.php
- woobe_bulk_finished - hook después de terminar la edición masiva: \ext\bulk\bulk.php
Algunas variables:
- woobe_checked_products - (js) IDs de los productos seleccionados en el Products Editor
- woobe_bind_editing - (js) si la edición vinculada está activada
- woobe_show_variations - (js) si las variaciones se muestran
- woobe_adv_panel_full_width - (js) si el ancho completo está activado
- global $WOOBE - (php) variable global principal del plugin que puedes usar

