Hace tiempo que usamos el plugin SCHEMA PRO para WordPress. Si tienes una web en WordPress y no lo usas, ya tardas en instalarlo. Es de pago pero merece la pena.
Uno de los temas que no nos gusta es que en el marcado LocalBusiness hay campos que no incluye, pero se le pueden añadir y esto es lo que vamos a ver hoy.
En el marcado Local Business de SCHEMA Pro echamos de menos los siguientes campos:
- hasMap -> Para poner el enlace al Google My Buisness o una localización en Google Maps.
- geo – latitude -> Para configurar las coordenadas geográficas; en este caso la latitud.
- geo – longitude -> Para configurar las coordenadas geográficas; en este caso la longitud.
¿Cómo añadir los campos hasMap y geo (latitude y longitude) a Schema Pro?
Para añadir estos campos simplemente añadimos este código en el archivo functions.php del child theme activo en WordPress:
/**
* SCHEMA PRO: Add hasMap and geo data
*/
add_action( 'after_setup_theme', 'add_my_custom_meta_field' );
function add_my_custom_meta_field() {
add_filter( 'wp_schema_pro_schema_meta_fields', 'my_extra_schema_field' );
add_filter( 'wp_schema_pro_schema_local_business', 'my_extra_schema_field_mapping', 10, 3 );
}
/**
* Add fields for mapping.
*
* @param array $fields Mapping fields array.
* @return array
*/
function my_extra_schema_field( $fields ) {
$fields['bsf-aiosrs-local-business']['subkeys']['has-map'] = array(
'label' => esc_html__( 'hasMap', 'wp-schema-pro' ),
'type' => 'text',
'default' => 'none',
'required' => false,
);
$fields['bsf-aiosrs-local-business']['subkeys']['geo-latitude'] = array(
'label' => esc_html__( 'latitude', 'wp-schema-pro' ),
'type' => 'text',
'default' => 'none',
'required' => false,
);
$fields['bsf-aiosrs-local-business']['subkeys']['geo-longitude'] = array(
'label' => esc_html__( 'longitude', 'wp-schema-pro' ),
'type' => 'text',
'default' => 'none',
'required' => false,
);
return $fields;
}
/**
* Mapping extra field for schema markup.
*
* @param array $schema Schema array.
* @param array $data Mapping fields array.
* @return array
*/
function my_extra_schema_field_mapping( $schema, $data, $post ) {
if ( isset( $data['has-map'] ) && ! empty( $data['has-map'] ) ) {
$schema['hasMap'] = esc_html( $data['has-map'] );
}
if ( isset( $data['geo-latitude'] ) && ! empty( $data['geo-latitude'] ) && isset( $data['geo-longitude'] ) && ! empty( $data['geo-longitude'] ) ) {
$schema['geo']['@type'] = 'GeoCoordinates';
$schema['geo'][latitude] = esc_html( $data['geo-latitude'] );
$schema['geo'][longitude] = esc_html( $data['geo-longitude'] );
}
return $schema;
}
Y automáticamente al crear un SCHEMA del tipo Local Business nos añadirá estos tres campos al final.
Y obviamente esto pasa la validación de Google del marcado y le aporta información muy valiosa.