我正在尝试将 echo
visual composer shortcodes
放到页面上。
我已经尝试了以下两种方法,但它们都不起作用:
函数.php:
方法一
/*
* add shortcode file
*/
function include_file($atts) {
$a = shortcode_atts( array(
'slug' => 'NULL',
), $atts );
if($slug != 'NULL'){
ob_start();
get_template_part($a['slug']);
return ob_get_clean();
}
}
add_shortcode('include', 'include_file');
方法二
function someshortocode_callback( $atts = array(), $content = null ) {
$output = "[vc_section full_width=\"stretch_row\" css=\".vc_custom_1499155244783{padding-top: 8vh !important;padding-bottom: 5vh !important;background-color: #f7f7f7 !important;}\"][vc_row 0=\"\"][vc_column offset=\"vc_col-lg-offset-3 vc_col-lg-6 vc_col-md-offset-3 vc_col-md-6\"][/vc_column][/vc_row][/vc_section]";
return $output;
}
add_shortcode('someshortocode', 'someshortocode_callback');
file_rendering_vc_shortcodes.php:
方法一
<?php if ( is_plugin_active( 'js_composer/js_composer.php' ) ) {
wc_print_notice('js_composer plugin ACTIVE', 'notice');
echo do_shortcode('[include slug="vc_templates/shop-page"]');
}; ?>
结果
- js_composer 插件已激活
- 简码原样在带括号的页面上
方法二
<?php $post = get_post();
if ( $post && preg_match( '/vc_row/', $post->post_content ) ) {
// Visual composer works on current page/post
wc_print_notice('VC ON', 'notice');
echo add_shortcode('someshortocode', 'someshortocode_callback');
} else {
wc_print_notice('VC OFF', 'notice');
//echo do_shortcode('[include slug="vc_templates/shop-page"]');
}; ?>
结果
- VC OFF(显然,因为短代码中的
vc_row
不存在) - 简码不在页面上
shop-page.php
<?php
/**
Template Name: Shop Page in theme
Preview Image: #
Descriptions: #
* [vc_row][vc_column][/vc_column][/vc_row]
*/
?>
[vc_section full_width="stretch_row" css=".vc_custom_1499155244783{padding-top: 8vh !important;padding-bottom: 5vh !important;background-color: #f7f7f7 !important;}"][vc_row 0=""][vc_column offset="vc_col-lg-offset-3 vc_col-lg-6 vc_col-md-offset-3 vc_col-md-6"][/vc_column][/vc_row][/vc_section]
是否可以在页面上呈现 vc shortcodes
,如果可以,它是如何完成的?
最佳答案
使用:
WPBMap::addAllMappedShortcodes();
然后像往常一样do_shortcode($content);
简而言之,除非不需要,否则页面构建器不会注册简码。
如果你的元素是通过vc_map
或vc_lean_map
注册的,那么就不需要使用add_shortcode
函数,你可以通过使用来完成所有事情>WPBMap::addAllMappedShortcodes();
它会在渲染过程中调用一个简码类回调,然后调用简码模板。
关于php - 将 Visual Composer 短代码渲染到页面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083958/