使用简码显示 WordPress 页面内容并显示嵌入的简码
Display WordPress page content with shortcode and show embedded shortcode
我正在使用自定义 Post 类型在我的网站上显示横幅。
内容可以是文本、图像,也可以是简码(例如按钮简码)。
如果我用简码显示内容,一切看起来都很好。横幅本身内的简码除外。
有什么方法可以呈现该简码吗?
这是我的简码:
// [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' );
试试下面的代码:
// [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
我正在使用自定义 Post 类型在我的网站上显示横幅。 内容可以是文本、图像,也可以是简码(例如按钮简码)。
如果我用简码显示内容,一切看起来都很好。横幅本身内的简码除外。
有什么方法可以呈现该简码吗?
这是我的简码:
// [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' );
试试下面的代码:
// [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