我已经创建了一个WordPress入门主题作为我的第一个项目,使其免费并可从所有人下载,但我实际上有一点问题。
我创建了一个短代码,可以从WordPress管理员添加到文本编辑器中,以便以合理的方式创建价格框:
function price-gold($atts, $content = null){
extract( shortcode_atts( array(
'title' => '',
'price' => '',
'plan' => '',
'color' => '',
'btn_target'=>'',
'btn_url'=>'',
'btn_text'=>'',
'btn_style' => '',
'effect' => '' ), $atts ) );
if($effect != "" && $effect != "none"){
$output = '<div class="price animate '.esc_attr($type).'" data-effect="'.esc_attr($effect).'">';
}else{
$output = '<div class="price '.esc_attr($type).'">';
}
if($color == '' || $color == 'theme'){
$color = 'btn-theme';
}
$output .= '<div class="price-header">';
if($title != ''){
$output .= '<h4 class="price-title">'.esc_attr($title).'</h4>';
}
if($price != ''){
$output .= '<h1 class="price-num '.esc_attr($color).'-t">'.esc_attr($price).'</h1>';
}
if($plan != ''){
$output .= '<div class="price-plan">'.esc_attr($plan).'</div>';
}
$output .= '</div>';
$output .= '<div class="price-content">';
$output .= '<ul>';
$output .= '<li class="price-rig">';
$output .= do_shortcode($content);
$output .= '</li>';
$output .= '</ul>';
$output .= '</div>';
$output .= '<div class="price-footer">';
$output .= do_shortcode('[button style="'.esc_attr($btn_style).'" color="'.esc_attr($color).'" target="'.esc_attr($btn_target).'" url="'.esc_attr($btn_url).'" text="'.esc_attr($btn_text).'"]');
$output .= '</div>';
$output .= '</div>';
return $output;
}
add_shortcode('price', 'price-gold');
$ content =将插入文本编辑器的文本。
现在它有效,但我$output .= do_shortcode($content);
只有一个<li>
,我需要展开{{1}}并将每个内容行放入$content
。
我已经做了一些测试,但我没有得到正确的结果,我真的很困惑,有没有人可以帮我一些代码?
答案 0 :(得分:0)
如果我理解正确,您试图将$ content分成可能基于\n
的行?如果是这样,您需要在&#39; \ n&#39;上展开字符串,并使用</li><li>
内嵌结果。
$output = do_shortcode(implode("</li><li>", explode("\n", $content)))
显然,如果您希望根据行以外的内容(例如,跨度,div,p元素或br)分割$ content,请相应地更改\n
。