Woocommerce | Agregar una columna personalizada en la lista de pedidos

WordPress es un Sistema Manejador de Contenido (CMS por sus siglas en inglés) para la creación de páginas web. La bondad que tiene este CMS es que podemos agregarle funciones particulares a través de la instalación de plugins o conectores.

En este ejemplo tenemos instalado el plugin Woocommerce el cual le da una característica especial a la página web convirtiéndola en una tienda en línea. Woocommerce, entre sus funciones administrativa, tiene una sección llamada «Pedidos», el cual es una bandeja de entrada de todos los pedidos que se generan a través de la tienda web.

En este artículo les traigo un ejemplo de cómo agregar una columna adicional a esa lista de pedidos la cual facilitará la visualización de cualquier información que requerimos sin tener que abrir el detalle del pedido.

Para esto les voy a enseñar como lograrlo a través del mismo wordpress y a través de los archivos en elhosting, ya que en algunas oportunidades WordPress no te permite modificar los archivos PHP directamente a través del Administrador.

Si bien lo que queremos hacer es agregar una columna en el listado de pedidos de Woocommerce, debemos tomar en cuenta que vamos a trabajar en los archivo de WordPress, específicamente en el archivo funciones.php del tema que tengamos activo en ese momento.

Modificando el archivo functions.php en la consola de WordPress

Ante todo, debemos auténticarnos en el módulo de administración de WordPress y el usuario debe tener perfil de «Administrador». Una vez ya autenticado, nos dirigimos al menú Apariencia -> Editor de archivos de Temas.

En este ejemplo estoy usando el tema PopularFX, sin embargo, todos los temas de WordPress contienen el archivo functions.php:

Imagen 2: Editor de archivos de temas de WordPress

En nuestro ejemplo vamos a agregar la columna de Productos comprados, esto para saber cuál fue el producto vendido sin tener que abrir el detalle de la Orden.

Una vez, ya abierto el archivo functions.php en la consola de WordPress, debemos ubicarnos en la última línea del archivo, cuidándonos de no afectar la función o funciones ahí escrita, y luego vamos a escribir (Puedes copiar y pegar el siguiente código):

add_filter('manage_edit-shop_order_columns', 'misha_order_items_column' );
function misha_order_items_column( $order_columns ) {
    $order_columns['order_products'] = "Productos comprados";
    return $order_columns;
}

add_action( 'manage_shop_order_posts_custom_column' , 'misha_order_items_column_cnt' );
function misha_order_items_column_cnt( $colname ) {
	global $the_order; // the global order object

 	if( $colname == 'order_products' ) {

		// get items from the order global object
		$order_items = $the_order->get_items();

		if ( !is_wp_error( $order_items ) ) {
			foreach( $order_items as $order_item ) {

 				echo $order_item['quantity'] .'&nbsp;&times;&nbsp;<a href="' . admin_url('post.php?post=' . $order_item['product_id'] . '&action=edit' ) . '">'. $order_item['name'] .'</a><br />';
				// you can also use $order_item->variation_id parameter
				// by the way, $order_item['name'] will display variation name too

			}
		}
		
	}

}

Luego de pegar este texto, presiona el botón «Actualizar archivo» de color azúl justo debajo de la caja de texto y ya con esto queda agregada la columna en tu listados de pedidos de Woocommerce.

Modificando el archivo functions.php en el Administrador de Archivos del hosting.

Con este procedimiento, primero debes tener acceso a tu hosting e ingresar al mismo para poder tener igualmente acceso a los archivos de tu página web.

En mi caso, estuve usando un hosting cPanel, en donde ingrese luego al administrador de archivos.

Recuerda que en panel de control (cPanel) puedes administrar las bases de datos, correos electrónicos, seguridad de tu página web, certificados de seguridad, estadísticas, respaldos, entre otras funciones.

Cuando ingreses al Administrador de archivos, debes seguir la siguiente ruta:
public_html -> wp-content -> themes -> [nombre del tema]

Nota: Recuerda que yo estoy usando el tema «popularfx».

Ya habiendo conseguido la carpeta del tema, ahí podemos ubicar el archivo functions.php, en el cual vamos a escribir el mismo código que usamos en el paso anterior, para esto, hacemos clic derecho sobre el archivo functions.php, presionamos la opción «Editar» y esto abrirá un editor de texto con el contenido del archivo.

Dentro del archivo, ubicamos el cursor en la última línea vacía y pegamos el siguiente código:

add_filter('manage_edit-shop_order_columns', 'misha_order_items_column' );
function misha_order_items_column( $order_columns ) {
    $order_columns['order_products'] = "Productos comprados";
    return $order_columns;
}

add_action( 'manage_shop_order_posts_custom_column' , 'misha_order_items_column_cnt' );
function misha_order_items_column_cnt( $colname ) {
	global $the_order; // the global order object

 	if( $colname == 'order_products' ) {

		// get items from the order global object
		$order_items = $the_order->get_items();

		if ( !is_wp_error( $order_items ) ) {
			foreach( $order_items as $order_item ) {

 				echo $order_item['quantity'] .'&nbsp;&times;&nbsp;<a href="' . admin_url('post.php?post=' . $order_item['product_id'] . '&action=edit' ) . '">'. $order_item['name'] .'</a><br />';
				// you can also use $order_item->variation_id parameter
				// by the way, $order_item['name'] will display variation name too

			}
		}
		
	}

}

Luego de esto, guardamos el archivo y ya solo nos queda ir al módulo de pedidos, refrescar la pantalla y verificar que nos haya aparecido la nueva columna.

Administrar las columnas con un plugin

Como todos los plugins de WordPress, puedes conseguir tanto en su biblioteca oficial como en internet, decenas de conectores que realicen esta función, solo que la mayoría son pagos. Por ejemplo, te dejo el plugin recomendado por Woocommerce: WooCommerce Admin Custom Order Fields, el cual tiene un valor de USD $99.00.

¿Estás buscando web hosting?

Encuentra el servidor web para tu página web, con las características más completas, correos corporativos y certificado SSL para transacciones eCommerce.