我正在使用this Twitter插件。我使用模板中的do_shortcode
函数输出内容。
在他们的other notes部分中,它说我可以覆盖自定义HTML标记,它将使用add_filter('latest_tweets_render_list')
但是,当我这样做时
add_filter('latest_tweets_render_list', function( array $list ){
return '<div>'.$list.'</div>';
}, 10, 1);
我收到一条PHP警告,指出有array to string conversion
并且没有输出任何推文。
我查看了插件核心文件,并且有这个。
function latest_tweets_render_html( $screen_name = '', $num = 5, $rts = true, $ats = true, $pop = 0 ){
$items = latest_tweets_render( $screen_name, $num, $rts, $ats, $pop );
$list = apply_filters('latest_tweets_render_list', $items, $screen_name );
if( is_array($list) ){
$list = '<ul><li>'.implode('</li><li>',$items).'</li></ul>';
}
return
'<div class="latest-tweets">'.
apply_filters( 'latest_tweets_render_before', '' ).
$list.
apply_filters( 'latest_tweets_render_after', '' ).
'</div>';
}
如何正确使用latest_tweet_render_list
过滤器以覆盖默认的HTML标记?我试图使用foreach循环,但这也没有做到。如果可以避免,我不希望修改插件文件。
答案 0 :(得分:0)
您的回调方法传递了array
- 您无法简单地输出数组(因此您的转发信息)。根据数组中的内容,您可以执行以下操作:
add_filter('latest_tweets_render_list', function( array $list ){
$output = '<div>';
foreach ($list as $l) {
$output .= $l;
}
$output .= '</div>';
return $output;
}, 10, 1);
要查看$list
变量中的项目,您可以先在功能顶部使用var_dump($list)
。