Reemplazar un formulario por información de contacto en AMP

Categorías: WordPress
Etiquetas: ,
¿Cómo personalizar el pie de página de las páginas AMP?

Otro de los problemas que hemos tenido a la hora de trabajar con páginas AMP es que no se muestran formularios de contacto. Por ejemplo el formulario del plugin más usado Contact Form 7 no aparece.

En muchos posts incluimos al final un formulario de contacto para solicitar más información, que en AMP no aparece. Por esta razón en las páginas AMP queremos mostrar información alternativa al formulario.

Nosotros normalmente utilizamos un texto encuadrado en etiquetas <p> con una clase específica (en este caso: contactarconnosotros). En este caso buscamos la apertura <p class="contactarconnosotros" y la etiqueta de cierre </p> y reemplazamos todo lo que hay por en medio por un contenido que definimos en la variable $textoamp.

En este código tenéis que personalizar ese texto y luego cuando insertéis el formulario en las entradas, usar la clase que luego vais a sustituir.

Ahora se añade este código al archivo functions.php del tema activo y a funcionar:

add_action( 'pre_amp_render_post', 'amp_add_custom_actions' );
function amp_add_custom_actions() {
    add_filter( 'the_content', 'quitar_formulario_contacto' );
}
function quitar_formulario_contacto( $content ) {
	$textoamp = '$1Si quieres contactar con nosotros puedes enviarnos un email a <a href="mailto:email@hablandodeinternet.com">email@hablandodeinternet.com</a>, usar el <a href="https://hablandodeinternet.com/contacto/?page=' . urlencode(get_permalink()) . '">formulario de contacto</a> o llamar al <a href="tel:12345678">123 456 789</a>.$3';
	$content = preg_replace('/(<p.*?class="contactarconnosotros"[^>]*>)(.*?)(<\/p>)/i', $textoamp , $content);
	$content = preg_replace('/<!--more-->/Uis', '', $content);
	return $content;
}

Y de paso eliminamos la etiqueta <!--more-->.

Salir de la versión móvil