【问题标题】:How to correctly use this filter in wordpress?如何在 wordpress 中正确使用此过滤器?
【发布时间】:2016-10-27 07:47:23
【问题描述】:

我正在使用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 循环,但这也没有成功。如果可以避免,我不希望修改插件文件。

【问题讨论】:

    标签: php html arrays wordpress twitter


    【解决方案1】:

    你的回调方法被传递了一个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)

    【讨论】:

    • 我确实提到我尝试了一个 foreach 循环,但我的标记有点不正确,谢谢。
    • 啊,是的,我忘了说它应该可以工作 :) 不用担心
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2015-10-01
    • 2020-09-24
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多