代码之家  ›  专栏  ›  技术社区  ›  Cray

用快捷方式显示WordPress页面内容并显示嵌入的短代码

  •  0
  • Cray  · 技术社区  · 5 年前

    我正在使用一个自定义的帖子类型来显示我的网站上的横幅。

    有没有办法呈现那个短代码?

    这是我的鞋码:

    // [banner id="" class=""]
    function shortcode_banner( $atts, $content ){
        extract(shortcode_atts(array(
            'id'    => '',
            'class' => '',
        ), $atts));
    
        $banner_id  = $id;
        $content    = get_post_field('post_content', $banner_id);
    
            return '<div class="'.$class.'">'.wpautop($content).'</div>';
    
    }
    add_shortcode( 'banner', 'shortcode_banner' );
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Mukesh Panchal    5 年前

    尝试以下代码:

    // [banner id="" class=""]
    function shortcode_banner( $atts, $content ) {
        extract(shortcode_atts( array(
            'id'    => '',
            'class' => '',
        ), $atts ) );
    
        $banner_id = $id;
        $content   = get_post_field( 'post_content', $banner_id );
    
        return '<div class="'.$class.'">'.wpautop( do_shortcode( $content ) ).'</div>';
    }
    

    function recursively_do_shortcode( $content ) {
        $content2 = $content;
        do{
           $content = $content2;
           $content2 = do_shortcode( $content );
        } while( $content2 !== $content ); // presumably you can test if shortcodes exist in content as well
        return $content2;
    }
    
    // [banner id="" class=""]
    function shortcode_banner( $atts, $content ){
        extract( shortcode_atts( array(
            'id'    => '',
            'class' => '',
        ), $atts ) );
    
        $banner_id = $id;
        $content   = get_post_field( 'post_content', $banner_id );
    
        return '<div class="'.$class.'">'.wpautop( recursively_do_shortcode( $content ) ).'</div>';
    }
    

    do_shortcode