在WordPress中使用PHP分解内容

时间:2014-07-21 21:50:10

标签: php wordpress explode

我已经创建了一个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

我已经做了一些测试,但我没有得到正确的结果,我真的很困惑,有没有人可以帮我一些代码?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您试图将$ content分成可能基于\n的行?如果是这样,您需要在&#39; \ n&#39;上展开字符串,并使用</li><li>内嵌结果。

$output = do_shortcode(implode("</li><li>", explode("\n", $content)))

显然,如果您希望根据行以外的内容(例如,跨度,div,p元素或br)分割$ content,请相应地更改\n