Utilizzo di do_shortcode con variabili in WordPress
Sto avendo difficoltà a ottenere il formato corretto per il PHP in questo embed do_shortcode utilizzando variabili dal plugin Advanced Custom Fields. Penso di aver provato ogni variazione possibile con ., ', e ". Dopo aver letto ogni risorsa disponibile, non sono ancora riuscito a risolvere.
<?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"]');
?>
Facendolo con una sola variabile, come in echo do_shortcode('[pw_map address="'. $postalcode . '" width="100%" height="200px"]');
funziona perfettamente.

La tua sintassi è rotta, i segni di virgoletta non corrispondono. Prova a separare i dati dal template dello shortcode e utilizza 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 );
È molto più semplice da leggere ed è più difficile creare errori di sintassi. :)

Non sembra restituire nulla (penso perché non abbia valori per nessuna di quelle variabili). Ho modificato così: `<?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 );
?>` ma non ha funzionato neanche così.

@JimKite Il %
in 100%
potrebbe aver confuso sprintf()
. Prova ora con il codice modificato.

La modifica del segno di percentuale non sembra aver fatto alcuna differenza, per quanto posso vedere. Non restituisce ancora nulla alla pagina. Era corretto dichiarare le variabili prima di questo codice?

Forse i valori dei campi sono vuoti o non ci sono dati di indirizzo validi? Stampali per verificarlo.

Facendo print_r ($address);
subito prima del echo do_shortcode
mostrava l'indirizzo.

È stata una mia stupidaggine. Il tuo codice funzionava perfettamente. Non avevo verificato che il codice postale inserito nel post di test fosse corretto, e deve aver creato un conflitto con l'indirizzo, quindi non restituiva affatto una mappa. Grazie mille per l'aiuto e scusa per l'errore.
