Cum să utilizezi do_shortcode cu variabile în WordPress?
Am dificultăți în a obține formatul corect pentru PHP în acest embed cu do_shortcode folosind variabile din pluginul Advanced Custom Fields. Cred că am încercat fiecare variație posibilă cu ., ', și ". După ce am citit toate resursele posibile, tot nu sunt mai aproape de soluție.
<?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"]');
?>
Când folosesc doar o singură variabilă, așa cum se vede mai jos echo do_shortcode('[pw_map address="'. $postalcode . '" width="100%" height="200px"]');
, funcționează perfect.

Sintaxa ta este incorectă, ghilimelele nu se potrivesc. Încearcă să separi datele de șablonul shortcode-ului și folosește 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 );
Așa este mult mai ușor de citit și mai greu să creezi erori de sintaxă. :)

Se pare că nu returnează nimic (cred că pentru că nu are valori pentru niciuna dintre acele variabile). Am editat astfel: `<?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 );
?>` dar nici asta nu a funcționat.

@JimKite Caracterul %
din 100%
ar fi putut provoca confuzie în sprintf()
. Încearcă acum codul modificat.

Modificarea semnului procentual nu pare să fi făcut vreo diferență, din câte văd. Încă nu returnează nimic pe pagină. Am procedat corect declarând variabilele înainte de acest cod?

Poate că valorile câmpurilor sunt goale sau nu există date valide de adresă? Afișează-le pentru a verifica.

Făcând print_r ($address);
chiar înainte de echo do_shortcode
a afișat adresa.

A fost prostia mea. Codul tău a funcționat perfect. Nu am verificat dacă codul postal introdus în postarea de testare era corect și probabil a produs un conflict cu adresa, astfel încât nu a returnat deloc o hartă. Mulțumesc mult pentru ajutor și îmi cer scuze pentru greșeală.
