vnořený shortcode

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á 3 roky, 10 měsíců.

Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (z celkem 6)
  • Autor
    Příspěvky
  • #29194

    Paja
    Participant

    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');
    #29201

    sjiamnocna
    Participant
    Web

    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

    #29219

    Paja
    Participant

    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

    #29222

    admin
    Keymaster
    Web

    @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].

    #29225

    sjiamnocna
    Participant
    Web

    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]

    #29227

    Paja
    Participant

    Dekuji…problem vyresen…pridal jsem do vnejsi funkce do_shortcode

Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (z celkem 6)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.