我正在尝试在主题中制作简单的短代码,以在管理视图中演示自定义标记选项。代码如下:
`<?php
ob_start(); ?>
<div class="item-container">
<p>This is admin view:<p>
<h4><?php echo $heading?></h4>
</div> <?php
$wena02_markup = ob_get_clean();
vc_map( array(
'name' => __( 'Heading' , 'wena-theme' ),
'base' => 'wena02_item',
'description' => __( 'Custom heading', 'wena-theme' ),
'content_element' => true,
'custom_markup' =>$wena02_markup, // 'CUSTOM MARKUP ADMIN VIEW'
'show_settings_on_create' => true,
'params' => array(
array(
'type' => 'textfield',
'heading' => __( 'Test Heading', 'wena-theme' ),
'holder' => 'div',
'param_name' => 'heading',
'description' => __( 'Heading will be displayed.', 'wena-theme' ),
),
),
) );
if(class_exists('WPBakeryShortCodesContainer')){ class WPBSC_Wena02_Item extends WPBakeryShortCodesContainer { /*Boom!*/ } }
if(!function_exists('wena02_item_output')){
function wena02_item_output( $atts, $content = null){
$atts = extract(shortcode_atts(
array( 'heading' => '',
),$atts )) ;
ob_start(); ?>
<div class="item-container">
<h4><?php echo $heading?></h4>
</div> <?php
return ob_get_clean();
}
add_shortcode( 'wena02_item' , 'wena02_item_output' );
}`
参数在函数“wena02_item_output”中提取,并且在输出中与 $heading 一样工作。
然后,在数组中我将自定义标记添加到 $wena02_markup
简单的 ob_start 函数可以很好地处理创建的对象,但仅限于条件 - 它位于顶部 - 直到数组并且不隐藏在任何函数中。显示良好的 html 消息“这是管理视图:”,但不显示变量。
所以我在与自定义标记连接的 ob_start 输出中将参数提取到 $heading 时遇到问题。 寻找一些可行的解决方案。
我尝试使用全局 $heading 但目前没有成功。
您可以尝试一下,希望它能满足您的需要
<?php
$wena02_markup = '
<div class="item-container">
<p>This is admin view:</p>
<h4>{{heading_placeholder}}</h4>
</div>';
vc_map( array(
'name' => __( 'Heading', 'wena-theme' ),
'base' => 'wena02_item',
'description' => __( 'Custom heading', 'wena-theme' ),
'content_element' => true,
'custom_markup' => $wena02_markup, // 'CUSTOM MARKUP ADMIN VIEW'
'show_settings_on_create' => true,
'params' => array(
array(
'type' => 'textfield',
'heading' => __( 'Test Heading', 'wena-theme' ),
'holder' => 'div',
'param_name' => 'heading',
'description' => __( 'Heading will be displayed.', 'wena-theme' ),
),
),
) );
if(class_exists('WPBakeryShortCodesContainer')){
class WPBSC_Wena02_Item extends WPBakeryShortCodesContainer { /* Additional logic if needed */ }
}
if(!function_exists('wena02_item_output')){
function wena02_item_output( $atts, $content = null ) {
extract(shortcode_atts(array('heading' => ''), $atts));
$output = str_replace('{{heading_placeholder}}', esc_html($heading), $wena02_markup);
return $output;
}
add_shortcode('wena02_item', 'wena02_item_output');
}
?>