Añadir columnas al listado de posts en el Backend de WordPress

Seguro que muchas veces, cuando estás administrando un WordPress echas de menos poder ver alguna columna en concreto en el listado de posts del backend (un campo personalizado, un stock de productos, etc).

El uso de fragmentos de código PHP es algo muy habitual en nosotros cuando hacemos mantenimiento de WordPress y mediante el siguiente código, generado con ChatGPT y verificado por nosotros, puedes hacer lo siguiente:

  • Añadir una columna, cuando el tipo de posts es product (productos de WooCommerce)
  • La columna va a contener el valor de un Advanced Custom Field llamado listado_de_cursos
  • La cabecera de la columna se va a llamar «Listado de cursos»
  • Va a permitir que se pueda ordenar

¿Qué le hemos pedido al ChatGPT?

Literalmente le hemos pedido lo siguiente:

Quiero añadir una columna en el backend de WordPress, en el listado de posts. Quiero que se pueda ordenar. Debe mostrar un Advanced Custom Field llamado «listado_de_cursos» y sólo debe mostrarse cuando el tipo de post es «product».

¿Qué ha generado el ChatGPT?

Os dejo por aquí el código PHP generado para que podáis utilizarlo en vuestros WordPress:

function agregar_mi_columna_product($columns) {
    $columns['listado_de_cursos'] = 'Listado de Cursos';
    return $columns;
}
add_filter('manage_edit-product_columns', 'agregar_mi_columna_product');


function mostrar_listado_de_cursos_columna($column, $post_id) {
    if ($column == 'listado_de_cursos') {
        $valor = get_post_meta($post_id, 'listado_de_cursos', true);
        echo $valor;
    }
}
add_action('manage_product_posts_custom_column', 'mostrar_listado_de_cursos_columna', 10, 2);


function hacer_listado_de_cursos_columna_ordenable($columns) {
    $columns['listado_de_cursos'] = 'listado_de_cursos';
    return $columns;
}
add_filter('manage_edit-product_sortable_columns', 'hacer_listado_de_cursos_columna_ordenable');

function ordenar_por_listado_de_cursos($query) {
    if (!is_admin() || !$query->is_main_query()) {
        return;
    }
    if ($query->get('post_type') == 'product' && $query->get('orderby') == 'listado_de_cursos') {
        // Establece los parámetros para ordenar por el campo ACF
        $query->set('meta_key', 'listado_de_cursos');
        $query->set('orderby', 'meta_value');
        // Si el campo es numérico, utiliza 'meta_value_num'
    }
}
add_action('pre_get_posts', 'ordenar_por_listado_de_cursos');

Ya sabéis que este código lo podéis poner en functions.php de vuestro tema, pero lo óptimo es usar un plugin como Code Snippets para que no se pierda nada cuando actualicéis el tema.

Resultado en el backend de WordPress

Aquí podemos ver cómo ha generado una nueva columna, ordenable, en el listado de productos de WooCommerce y con el valor del campo personalizado.

Quizá te interese...
Deja un comentario...
Suscribirme
Notificación de
guest
0 Comentarios
Comentarios en línea
Ver todos los comentarios