Zvolené téma obsahuje celkem 5 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel
Paja a poslední změna je stará 8 let, 4 měsíce.
-
Zdravím, vytvořil jsem si jednoduchou funkci na vkládání shortcode. Funkce mi nefunguje, pokud je daný shortcode vnořený v jiném shortcode. Mohl by mi prosím někdo poradit jak moji funkci opravit. Děkuji
funkční řešení
[xml polozka="cena"]nějaký další text
nefunkční řešení
[jiny_shortcode][xml polozka="cena"][/jiny_shortcode]
function feed_function($atts, $content = null) {
global $post;
extract(shortcode_atts(array(
'polozka' => null
), $atts));
;
return (get_post_meta($post->ID, $polozka, true)== '') ? 'žádná hodnota' : get_post_meta($post->ID, $polozka, true);
}
add_shortcode('feed', 'feed_function');
No, obávám se, že pokud je název shortcode “feed”, tak [xml] fungovat nebude ;-)
Jinak podle titulku mě spíš napadá, že ten vnější SHC musí použít fci do_shortcode a zpracovat tak svůj obsah. V základní výbavě se SHC v obsahu jiného SHC nezpracovává…
Jsem na telefonu, takže kód nedám, ale až budu, mrknu se na to
Dekuji, v nazvu shortcode jsem se preklepnul, ale primarne mi jde o funkcnost pokud je shortcode vnoreny v jinem shortcode. Jde to nejak upravit abych nemusel upravovat ten vnejsi shortcode?
Dekuji
@paja: Vnořené zkrácené zápisy (shortcodes) by měly být bez problémů rozeznávány, viz manuál. Ale doporučil bych ještě pročíst toto, kde je zmiňováno, že obsah pro nadřazený shortcode by měl být ještě prohnán přes funkci do_shortcode(), aby byl vnitřní shortcode správně zpracován. Takže shortcode [xml polozka="cena"]
bude zpracován v rámci nadřazeného [jiny_shortcode]
pouze v případě, že funkce pro [jiny_shortcode]
používá pro $content
funkci do_shortcode()
. Ale nezkoušel jsem to, případně prosím doplňte aktuální kód pro vyzkoušení, a to i pro [jiny_shortcode]
.
Jak jsem psal včera (a dneska admin), obsah SHC se nezpracovává a nezapojuje další SHC. Tedy do obalové /vnější funkce přidej funkci do_shortcode, která nastartuje další SHC uvnitř obsahu;
add_shortcode( 'vnitrni', function( $pars, $content = "" ) {
$pars = shortcode_atts(
array(
'cislo' => 123,
'pismeno' => 'A',
), $pars
);
$content = do_shortcode($content);
return $content;
} );
add_shortcode( 'vnejsi', function( $pars, $content = "" ) {
$content = do_shortcode($content);
$content .= '<br/>Měj se!';
return $content;
} );
Takhle by teoreticky mohlo fungovat toto:
[vnejsi][vnitrni cislo=321 pismeno="Ž"][/vnejsi]
Dekuji…problem vyresen…pridal jsem do vnejsi funkce do_shortcode
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.
WordPress – novinky, návody a zajímavosti