Usando do_shortcode con variables en WordPress
Luchando por obtener el formato correcto para el PHP en este embed con do_shortcode usando variables del plugin Advanced Custom Fields. Creo que he intentado todas las variaciones con ., ' y ". Después de leer todos los recursos que pude encontrar, todavía no estoy más cerca.
<?php
$address = get_field('cong_streetaddress');
$city = get_field('cong_city');
$province = get_field('cong_province');
$postalcode = get_field('cong_postalcode');
echo do_shortcode('[pw_map address="'" . $address . " . " . $city . " . " . $province . " . " . $postalcode . "'" width="100%" height="200px"]');
?>
Hacerlo con una sola variable, así echo do_shortcode('[pw_map address="'. $postalcode . '" width="100%" height="200px"]');
funciona bien.

Tu sintaxis está rota, las comillas no coinciden. Intenta separar los datos de la plantilla del shortcode y usa sprintf()
:
$shortcode = sprintf(
'[pw_map address="%1$s %2$s %3$s %4$s" width="%5$s" height="200px"]',
$address,
$city,
$province,
$postalcode,
'100%'
);
echo do_shortcode( $shortcode );
Así es mucho más fácil de leer y es más difícil cometer errores de sintaxis. :)

Parece que no devuelve nada (creo porque no tiene valores para ninguna de esas variables). Lo edité así: `<?php
$address = get_field('cong_streetaddress');
$city = get_field('cong_city');
$province = get_field('cong_province');
$postalcode = get_field('cong_postalcode');
$shortcode = sprintf(
'[pw_map address="%1$s %2$s %3$s %4$s" width="100%" height="200px"]',
$address,
$city,
$province,
$postalcode
);
echo do_shortcode( $shortcode );
?>` pero eso tampoco funcionó.

@JimKite El %
en 100%
podría haber confundido a sprintf()
. Prueba el código modificado ahora.

El cambio del signo de porcentaje no parece haber hecho ninguna diferencia que yo pueda ver. Todavía no devuelve nada a la página. ¿Estaba en lo correcto al declarar las variables antes de este código?

Quizás los valores de los campos están vacíos o no hay datos de dirección válidos? Imprímelos para verificarlo.

Al hacer print_r ($address);
justo antes del echo do_shortcode
mostró la dirección.

Eso fue mi estupidez. Tu código funcionó perfectamente. No verifiqué que el código postal ingresado en la publicación de prueba fuera correcto, y debe haber estado generando un conflicto con la dirección, por lo que no devolvía ningún mapa. Muchas gracias por la ayuda y disculpas por el error.
