Proveedores de productos de WooCommerce-add el tablero de gestión front-end

Para el propósito de este artículo, le mostraré principalmente cómo agregué un tablero para administrar las reservas vendidas utilizando el complemento de reservas de WooCommerce a través del complemento de proveedores de productos de WooCommerce, porque hice el código reciente y eso está empaquetado bien y atendido y todo probado como. Sin embargo, podría usarse fácilmente para administrar productos desde otras extensiones y también otras opciones, como envío, etc., desde el mismo lugar. Agregué el código para esto a un GIST https://gist.github.com/iambailey/0583a0c8069301949c, así que consulte allí.
Ahora: construyo todas mis extensiones de WooCommerce usando un marco creado por mí, y el primer paso en este marco es ejecutar la funcionalidad solo si los complementos que necesita están activos: en este caso necesitamos WooCommerce, proveedores de productos de WooCommerce y reservas de WooCommeres, por lo que que descubramos si los tenemos: clase WVBM {private $ textdomain = “wooCommerce-Vendors -bookings-ganagement”; Private $ required_plugins = array (‘woCommerce’, ‘wooCommerce-bookings’, ‘wooCommerce-product-vendors’); La función HAY_REQUIRED_PLUGINS () {$ activo_plugins = (matrix) get_option (‘activo_plugins’, array ()); if (is_multisite ()) {$ activo_plugins = array_merge ($ activo_plugins, get_site_option (‘activo_sitewide_plugins’, array ())); } Foreach ($ this-> require_plugins ca $ key => $ requerido) {$ necesario = (! IS_NUMERIC ($ KEY))? “{$ Key}/{$ requerido} .php”: “{$ requerido}/{$ requerido} .php”; If (! In_array ($ requerido, $ activo_plugins) &&! Array_key_exists ($ requerido, $ activo_pluges)) devuelve falso; } Devuelve verdadero; }
función __construct () {if (! $ this-> have_required_plugins ()) return; } Entonces, como puede ver, almacenamos los tres nombres de complementos en una matriz, la función Have_required_Plugins luego recopila todos los lugares donde se almacenan los complementos activados y verifica los necesarios. Tenga en cuenta que los complementos activos se almacenan mediante la carpeta/nombre del archivo, la mayoría de los casos, ambos son los mismos, pero si se encuentra con uno donde el nombre del archivo es diferente, guárdelo como clave => valor, como: privado $ reequired_plugins = matriz = matriz = matriz (‘WoCommerce’, ‘WooCommerce-Bookings’ => ‘Woo-Bookings’, ‘WooCommerce-Product-Vendors’); el código en Have_required_Plugins está preparado para tales casos. Ahora tendremos el tablero de nuestros proveedores en nuestro propio Dashboard de URL /Vendors. Hay una manera simple de hacer esto: simplemente agregue una página e ingrese el código de la placa por un código corto. Sin embargo, queremos hacerlo de la nueva manera brillante, que es agregar un punto final personalizado. Para hacer esto, debe grabar la nueva consulta de cal en el conjunto (el conjunto existente es cosas como “página”, “publicación”, etc.), debe registrar esa nueva consulta como punto final y luego administrar el procesamiento del código Cuando alguien visita el punto final (URL). Agregar nuevas reglas para reescribir a WordPress también significa que debe eliminar el sistema.
La mejor manera que encontré para agregar el punto final y reescribir las reglas es hacerlo al activar el complemento. register_activation_hook (__ file__, array ($ this, ‘rewrite_flush’));
function rewrite_flush () {flush_rewrite_rules (); } Entonces, para registrar la interrogación del punto final lima: add_filter (‘query_vars’, array ($ this, ‘add_query_vars’)); function add_query_vars ($ vars) {$ vars [] = ‘vendors-dashboard’; devolver $ vars; } Ahora, en la inicial, agregamos nuestro punto final: add_action (‘init’, array ($ this, ‘endpoint_keeper’));
function endpoint_keeper () {add_rewrite_endpoint (‘Vendors-Dashboard’, EP_all); add_rewrite_rule (‘/Vendors-Dashboard /(.*)/ Page/([0-9])/?’, ‘index.php? Vendors-Dashboard = $ Matches [1] & Page = $ Matches [2]’,,, ‘parte superior’); }
Ahora tratemos con las solicitudes de nuestro punto final (una solicitud es lo que se hace al servidor para recibir el contenido para una determinada URL). add_action (‘pars_request’, array ($ this, ‘pars_request’), 0); Parse_request function ($ reequest) {global $ wp; $ Key = ‘Proveedores-Tablou a bordo’; if (isset ($ _get [$ key])) {$ wp-> query_vars [$ key] = $ _get [$ key]; } else if (isset ($ wp-> query_vars [$ key])) {$ wp-> query_vars [$ key] = $ wp-> query_vars [$ key]; }
} Simplemente verificamos si servimos el punto final y si construimos la consulta de cal en la matriz de $ WP. Luego usamos esa consulta para verificar si estamos en nuestra página y transmitir nuestro contenido personalizado de la siguiente manera:
add_filter (‘Template_include’, array ($ this, ‘get_template’));
function get_template ($ plantplate) {global $ wp; if (isset ($ wp-> query_vars [‘Vendors-Dashboard’])) $ Template = TrailingsLashit (plugin_dir_ (__ file__)). “proveedores-dashboard.php”; devolver $ plantilla; } Lo único que hacemos en nuestro archivo principal es conectar una función para procesar la acción de confirmación del depósito: podría haber usado AJAX para esto, pero elegí usar php: add_action (‘wp’, array ($ this, ‘process_confirm ‘))); function process_confirm () {if ($ _get [‘ wvbm_action ‘] == “confirmar”) {if (get_post_type ($ _ get [‘ booking_id ‘)! [‘ Security ‘],’ Vendor-booking-confir -noncerator ‘)) {wc_add_notics (“reserva de solicitudes no válidas no confirmar”, “error”); $ url = sitio_url (). “/vendors-dashboard/”.geet_query_var(‘Vendors-Dashboard’).”/”; Encabezado (“ubicación:”. $ Url); } $ Booking = new wc_booking ($ _ get [‘booking_id’]); $ booking-> update_status (“confirmarmed”); Wc_add_nototic (“reserva”. $ _ Get [‘Booking_id’]. “Confirmar”, “éxito”); }}
Ahora en la plantilla de proveedores-dashboard.php: <? Php get_header (); Global $ WVBM; ?
show_dashboard (); ? ?> Recuerda dos partes clave aquí: Global $ WVBM
Esto es global en el que almacenamos la clase principal de complementos y la llevamos a usar la función más grande en esa clase: $ wvbm-> show_dashboard (); Function show_dashboard () {/* Extract (ShortCode_atts (Array (‘Active_Tabs’ => ‘Bookings’ // Coma Seperad Lista de pestañas activas), $ ATTS); */ $ Vendor = get_term_by (‘Slug’, get_query_var (‘Vendors-Dashboard’), ‘wcpv_product_vendors’); if (! $ Vendor) {Echo ”

¡El proveedor no fue encontrado! “; return;} $ user = get_current_user_id (); if (! current_user_can (‘administrador’) &&! is_vendor_admin ($ vendor-> termin_id)) {echo” No tiene el permiso para ver esta página “; return;} $ Cols = array (‘reserva de identificación’, ‘pedido’, ‘fecha’, ‘hora de inicio’, ‘tiempo final’, ‘número de invitados’, ‘precio’, ‘usuario’, ‘fecha de aplicación’, ‘estado’ ‘,’ Acciones ‘); $ Tabs = Array (‘ Reservaciones ‘); $ POSTS_PER_PAGE = 10; $ PAGE = (get_Query_var (‘ Paginat ‘))? 1: get_query_var (‘ Paginat ‘); $ reservas = nueva WP_Query (Array (Array (Array (‘Post_type’ => ‘to_booking’, ‘Post_per_page’ => $ Post_per_page, ‘Meta_key’ => ‘_booking_vendor’, ‘Met_value’ => $ Vendor-> termini, ‘Post_status’ => Any ‘,’ Pagado ‘= > Get_query_var (‘Paged’))); $ data = array (); foreach ($ reservas-> postari as $ key => $ reservation) {$ _boking = new wc_boking ($ reserva-> id);
if ($ booking-> post_status! = “cancelado”) array_push ($ acciones, “cancelar”); if ($ booking-> post_status == “Confirmación de espera”) array_push ($ acciones, “confirmación”); $ action_strings = array (); Foreach ($ acciones como $ acción) {$ action_url = add_query_arg (array (‘wvbm), site_url (). “/Vendors-dashboard/ĭ.geet_Query_var(‘Vendors-DashBoard’).”); $ Action_strings [] = ($ Action == “Cancelar”)? “Get_cancel_url ().” “> Cancelar” “:” .ucfirst ($ acción). “”;} $ Orden de datos “=> $ booking-> post_parent,” date “=> date (” ymd “, stratotime (get_post_meta ($ booking-> id, ‘_ booking_start’)), “hora de inicio” => date (“h: ia”, stretime (get_post_meta ($ booking-> id, ‘_ booking_start’)), “Tiempo final” = > date (“h: ia”, ancotime (get_post_meta ($ booking-> id, ‘_booking_end’, true)), “# de invitados” => count (get_post_meta ($ booking-> id, ‘_ booking_persons’, true ‘ ), ‘precio’ => get_post_meta ($ booking-> id, ‘_ booking_cost’, true), “user” => (get_user_meta ($ user, ‘billing_first_ame’, true)!, True): $ user-> user_login , “fecha aplicada” => $ booking-> post_date, “status” => $ booking-> post_status, “acciones” => implosod (“, $ action_strings);} wc_print_nototes ();?>

$ tab) {$ class = ($ key == 0)? “Activo”: “”; ? class = ” str_replace ($ big, ‘%#%’, esc_url (get_pagenum_link ($ big)), ‘format’ =>? Paged =%#%’,’ actual ‘=> max (max ( 1, get_query_var (‘Paged’)), ‘Total’ => $ Bookings-> max_num_pages)); y los muestra en una tabla HTML completa con enlaces para cancelar y confirmar la reserva. Simple…

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *