logo logo
Aquí está el menú
Añadir campos ACF a las columnas del admin

Añadir campos personalizados en WordPress es muy sencillo si usas el plugin Advanced Custom Fields (ACF). Pero hay ciertas funcionalidades que en ocasiones vamos a necesitar y que debemos implementar.

Contexto:

Tenemos un custom post type ‘contrato_compra’, que entre otros campos personalizados, tenemos uno llamado ‘agente_de_compra’. En este escenario, nos piden tener una columna en el admin de contratos, con los agentes de compra, y poder ordenar por él.

Añadimos la columna:

   add_filter('manage_contrato_compra_posts_columns', 'bl_manage_contrato_compra_posts_columns' );     add_filter('manage_contrato_compra_posts_custom_column', 'bl_manage_contrato_compra_posts_custom_column', 10, 2);
public static function manage_contrato_compra_posts_columns($columns) {
$columns['agente_de_ventas'] = 'Agente de Ventas';
return $columns;
}

public static function manage_contrato_compra_posts_custom_column( $column, $post_id ) {
if ($column == 'agente_de_ventas') {
$evdate = get_field('agente_de_ventas');
echo $evdate;
}
}

La hacemos ordenable:

Una vez tenemos la nueva columna disponible, vamos a darle el superpoder de ordenar los contratos según su valor:

add_filter( 'manage_edit-contrato_compra_sortable_columns','manage_edit_contrato_compra_sortable_columns' );
add_action( 'pre_get_posts', 'pre_get_posts' );
public static function pre_get_posts( $query ) {
if ( ! is_admin() )
return;
$orderby = $query->get('orderby');
if ( 'agente_de_ventas' == $orderby ) {
$query->set( 'meta_key', 'agente_de_ventas' );
$query->set( 'orderby', 'meta_value' );
}
}
public static function manage_edit_contrato_compra_sortable_columns( $columns ) {
$columns['agente_de_ventas'] = 'agente_de_ventas';
return $columns;
}

Y listo, ya tenemos nuestra funcionalidad implementada: