使用WP过滤器会使值消失?

时间:2016-06-27 13:35:51

标签: php html wordpress twitter

我正在使用this来显示一些推文。

使用如图所示的覆盖过滤器here后,它会使自然发生的时间戳消失。

作者给出了一个示例,您可以使用它来覆盖默认标记,如下所示:

add_filter('latest_tweets_render_tweet', function( $html, $date, $link, array $tweet ){
    $pic = $tweet['user']['profile_image_url_https'];
    return '<p class="my-tweet"><img src="'.$pic.'"/>'.$html.'</p><p class="my-date"><a href="'.$link.'">'.$date.'</a></p>';
}, 10, 4 );

这是我的版本:

add_filter('latest_tweets_render_tweet', function($html){
return
'<div class="row">
    <div class="small-1 columns twitter-icon-wrap">
      <i class="fa fa-twitter tweet-icon fa-2x fa-pull-left"></i>
    </div>
  <div class="small-11 columns tweet-wrap">'.$html.'</div>
  <p class="tweet-details"><a href="" target="_blank"></a></p>
</div>';
}, 10 , 1 );

如果我在函数中的$date变量之后添加$html,如:

add_filter('latest_tweets_render_tweet', function($html, $date)

然后我收到警告:

Warning: Missing argument 2 for ******\******\Extras\{closure}(), called in /srv/www/*********/current/web/wp/wp-includes/plugin.php on line 235 and defined in /srv/www/*******/current/web/app/themes/*********/lib/extras.php on line 144

第144行是add_filter('latest_tweets_render_tweet', function($html)

如果我随后将$date变量添加到返回的HTML中,忽略警告,则会出现错误:

Notice: Undefined variable: date in.....

虽然这是一个警告,但仍然没有显示日期。如何重新显示日期?

1 个答案:

答案 0 :(得分:1)

问题是add_filter()1)中的最后一个论点。此参数是number of accepted arguments

add_filter ( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

由于您要使用2个参数,因此需要将add_filter()的最终参数更改为2。换句话说:

add_filter ( 'latest_tweets_render_tweet', function( $html, $date ) {}, 10, 2 );

目前还不清楚你究竟想用$date做什么...所以我只想给你一个通用的例子:

add_filter('latest_tweets_render_tweet', function( $html, $date ){
    // $html and $date are now available to you
    return true;  // remember to return something (likely something different than this)
}, 10, 2 );  // <-- This argument is changed to 2