Wordpress Shortcode显示上面的小部件标题

时间:2014-08-24 23:13:22

标签: shortcode wordpress

我在functions.php文件中添加了以下过滤器:

add_filter('widget_text', 'do_shortcode'); 

这样可以按照预期在我的小部件中启用短代码。

但是,短代码的内容现在显示在标题上方。我做错了什么?

这就是我通过短代码回应的内容:

$events_msg = '<div>You have attended <br> <span class="big-num">'. $num_actual_events . '</span> / ' . $num_total_events . ' ' . $event_type . '</br>('. $num_required_events.' required)<br><br></div>';

echo $events_msg;

2 个答案:

答案 0 :(得分:3)

问题是您在短信中调用echo()而不是return结果。如果您考虑调用函数的顺序,则在输出实际的小部件HTML之前运行apply_filters( 'widget_text' ),因此作为过滤器的一部分的echo会导致它过早打印出来。要更正此return而不是echo结果。

add_filter('widget_text', 'do_shortcode'); 
add_shortcode('events', 'events_shortcode' );
function events_shortcode( $atts, $content=null ){
    // set default attribute values and extract to variables
    extract( shortcode_atts( array( 'attribute' => 'default_value' ), $atts ) );

    // populate your variables

    $events_msg = '<div>You have attended <br> <span class="big-num">'. $num_actual_events . '</span> / ' . $num_total_events . ' ' . $event_type . '</br>('. $num_required_events.' required)<br><br></div>';

    // return, don't echo
    return $events_msg;
}

答案 1 :(得分:0)

当您将过滤器添加到functions.php时,添加以下内容可能也解决了问题

add_filter( 'widget_text', 'shortcode_unautop' );