Rav*_*i87 3 wordpress shortcode
我在functions.php 文件中添加了以下过滤器:
add_filter('widget_text', 'do_shortcode');
Run Code Online (Sandbox Code Playgroud)
这已按预期在我的小部件中启用了短代码。
但是,短代码的内容现在显示在标题上方。我究竟做错了什么?
这就是我通过短代码呼应的内容:
$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;
Run Code Online (Sandbox Code Playgroud)
问题是您正在调用echo()短代码而不是return结果。如果您考虑调用函数的顺序,则该函数apply_filters( 'widget_text' )会在输出实际小部件 HTML 之前运行,因此您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;
}
Run Code Online (Sandbox Code Playgroud)