最近我正在制作一个wordpress短代码插件。这是一个响应式短代码插件。我想根据用户的用户输入声明自定义css。所以我必须为这个atts制作一个$ GLOBALS变量,但它不起作用。有人请帮我解决这个问题,因为我无法弄清楚什么是错的。
<?php
function gs_tabs_shortcode($atts, $content= null){
$GLOBALS['tab_count'] = 0;
extract(shortcode_atts(array(
'fontcolor' => '',
'tabcolor' => '',
'contcolor' => '',
'contfontc' => ''
), $atts) );
$x = $GLOBALS['tab_count'];
//__User input bind in supper globar array__//
$GLOBALS['styls'][$x] = array( 'fontcolor' => $fontcolor,
'tabcolor' => $tabcolor,
'contcolor' => $contcolor,
'contfontc' => $contfontc);
$GLOBALS['tab_count']++;
do_shortcode( $content );
if ( is_array( $GLOBALS['tabs'] ) ) {
foreach ($GLOBALS['tabs'] as $tab ) {
$tabs[]= '<li> <i class="fa fa-'.$tab['icon'].' fa-lg "></i> '.$tab['title'].' </li>';
$tabcontent[]= '<div><p> '.$tab['content'].' </p></div>';
}
$return = '<div id="horizontalTab">';
$return .= '<ul class="resp-tabs-list">'.implode( "\n", $tabs ).'</ul>';
$return .= '<div class="resp-tabs-container">'.implode("\n", $tabcontent).'</div>';
$return .= '</div>';
}
return $return;
}
add_shortcode('gs_tabs', 'gs_tabs_shortcode');
function gs_tabs_shortcode_nested( $atts, $content= null ){
extract(shortcode_atts(array(
'title' => '',
'icon' => ''
), $atts) );
$x = $GLOBALS['tab_count'];
$content = do_shortcode($content);
//__User input bind in supper globar array__//
$GLOBALS['tabs'][$x] = array( 'title' => $title,
'content' => $content,
'icon' => $icon);
$GLOBALS['tab_count']++;
}
add_shortcode('gs_item','gs_tabs_shortcode_nested');
//customize userdata
function my_custom_fonts() {
if (is_array( $GLOBALS['styls'] ) ) {
foreach ( $GLOBALS['styls'] as $style ) {
$opt= '<style>
.resp-tab-item {
background: '.$style['tabcolor'].';
color:'.$style['fontcolor'].';
}
</style>';
echo $opt;
}
}
}
add_action('wp_head', 'my_custom_fonts');
?>
这是我的自定义css功能
//customize userdata
function my_custom_fonts() {
if (is_array( $GLOBALS['styls'] ) ) {
foreach ( $GLOBALS['styls'] as $style ) {
$opt= '<style>
.resp-tab-item {
background: '.$style['tabcolor'].';
color:'.$style['fontcolor'].';
}
</style>';
echo $opt;
}
}
}
add_action('wp_head', 'my_custom_fonts');
用户要声明样式
[gs_tabs fontcolor="black" tabcolor="blue" ]
[gs_item title="item1" icon="camera-retro"]this is item 1[/gs_item]
[gs_item title="item2" ]this is item 2[/gs_item]
[gs_item title="item3" icon="binoculars"]this is item 3[/gs_item]
[/gs_tabs]