Schema Pro – Añadir hasmap, Geo Coordenadas y redes sociales

Juan Antonio Munoz Castro - emoji con bus

¿Alguna vez has tenido la necesidad de añadir los atributos hasmap, coordenadas y redes sociales en tu marcado schema con el plugin schema pro? ¡te explico como hacerlo de forma fácil!

Actualizado 7 Diciembre 2020

Añadimos también los campos personalizados al schema de servicio. Como podrás comprobar en el bloque de códigos de servicio falta hasMap, latitud y longitud dado que estos parámetros no los acepta este código.

Te dejo el código para añadir estos campos a schema PRO

<?php

/**
 * SCHEMA PRO: Añadir hasmap, Coordenadas y redes sociales
 * a los datos de local business y de servicio
 * 
 * Código creado por Juan Anotnio Muñoz Castro
 * https://juanmcastro.es
 */

function JM_add_my_custom_meta_field() {

    //Registramos los campos personalizados
    add_filter( 'wp_schema_pro_schema_meta_fields', 'JM_my_extra_schema_field' );
    
    //añadimos los campos personalizados a los datos de local business
    add_filter( 'wp_schema_pro_schema_local_business', 'JM_my_extra_schema_field_mapping', 10, 3 );

    //añadimos los campos personalizados a los datos de servicio
    add_filter( 'wp_schema_pro_schema_service', 'JM_my_extra_schema_field_mapping', 10, 3 );

}add_action( 'after_setup_theme', 'JM_add_my_custom_meta_field' );

/**
 * Añadir ficheros a la pagina de configuración
 */
function JM_my_extra_schema_field( $fields ) {

    /**
     * creamos los campos personalizados para local business
     */
        $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']['Facebook'] = array( 
            'label'    => esc_html__( 'Facebook', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );

        $fields['bsf-aiosrs-local-business']['subkeys']['Instagram'] = array( 
            'label'    => esc_html__( 'Instagram', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );

        $fields['bsf-aiosrs-local-business']['subkeys']['Twitter'] = array( 
            'label'    => esc_html__( 'Twitter', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );

        $fields['bsf-aiosrs-local-business']['subkeys']['Linkedin'] = array( 
            'label'    => esc_html__( 'Linkedin', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );

        $fields['bsf-aiosrs-local-business']['subkeys']['web'] = array( 
            'label'    => esc_html__( 'Web', '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,
        );
    /**
     * FIN DATOS LOCAL BUSINESS
     */

    /**
     * Creamos los campos personalizados para el tipo de dato servicios
    */
        $fields['bsf-aiosrs-service']['subkeys']['Facebook'] = array( 
            'label'    => esc_html__( 'Facebook', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );

        $fields['bsf-aiosrs-service']['subkeys']['Instagram'] = array( 
            'label'    => esc_html__( 'Instagram', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );

        $fields['bsf-aiosrs-service']['subkeys']['Twitter'] = array( 
            'label'    => esc_html__( 'Twitter', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );

        $fields['bsf-aiosrs-service']['subkeys']['Linkedin'] = array( 
            'label'    => esc_html__( 'Linkedin', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );

        $fields['bsf-aiosrs-service']['subkeys']['web'] = array( 
            'label'    => esc_html__( 'Web', 'wp-schema-pro' ),
            'type'     => 'text',
            'default'  => 'none',
            'required' => false,
        );
    /**
     * FIN DATOS DE SERVICIO
     */

	return $fields;
}

/**
 * Añadimos los campos nuevos al marcado schema
 */
function JM_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['Facebook'] ) && ! empty( $data['Facebook'] ) ) {
		$schema['sameAs'][] = esc_html( $data['Facebook'] );
    }

    if ( isset( $data['Instagram'] ) && ! empty( $data['Instagram'] ) ) {
		$schema['sameAs'][] = esc_html( $data['Instagram'] );
    }

    if ( isset( $data['Twitter'] ) && ! empty( $data['Twitter'] ) ) {
		$schema['sameAs'][] = esc_html( $data['Twitter'] );
    }

    if ( isset( $data['Linkedin'] ) && ! empty( $data['Linkedin'] ) ) {
        /* $schema['sameAs'] = esc_html( $data['Linkedin'] ); */
        $schema['sameAs'][] = esc_html( $data['Linkedin'] );
    }

    if ( isset( $data['web'] ) && ! empty( $data['web'] ) ) {
        /* $schema['sameAs'] = esc_html( $data['Linkedin'] ); */
        $schema['sameAs'][] = esc_html( $data['web'] );
    }
    
	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;
}

?>

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable Juan Antonio Muñoz Castro .
  • Finalidad Moderar los comentarios. Responder las consultas.
  • Legitimación Tu consentimiento.
  • Destinatarios SERED.
  • Derechos Acceder, rectificar y suprimir los datos.
  • Información Adicional Puedes consultar la información detallada en la Política de Privacidad.

Ir arriba
Esta web utiliza cookies, puedes ver aquí la Política de Cookies