木材 - 将数据扩展到上下文(WordPress)

时间:2017-11-10 18:51:04

标签: wordpress twig timber

所以我试图让这个函数数据可用于每个上下文,但我现在仍然坚持如何实际获取数据本身就是它的上下文部分。

我有以下内容:

add_filter( 'timber_context', 'fancySquares_get_instagram_images'  );

 function fancySquares_get_instagram_images( $context ) {

  $context['instaImages'] = [];

  $api = wp_remote_request("testUrlHere");
  $api = json_decode($api['body']);


  for($i = 0; $i < 20; $i++)
    {
      $images[$i] = [];
      $images[$i]['image'] = $api->data[$i]->images->standard_resolution->url;
      $images[$i]['url'] = $api->data[$i]->link;
      $images[$i]['likes'] = $api->data[$i]->likes->count;
    }

    return $context;

}

我是他们试图打印结果以确保我做得对,它返回一个空数组()

{{ instaImages|print_r}}

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

以下是上述问题,希望这有助于将来的某些人。

您将添加过滤器:

  • 在传递给过滤器的函数内部,您将CONTEXT变量设置为您将运行所有魔法的函数
  • 然后返回上下文,以便您可以自行决定在整个网站中使用

代码示例:

add_filter( 'timber_context', 'fancySquares_show_instagram_results'  );

function fancySquares_show_instagram_results( $context ) {
    $context['fancySquaresInstagram'] = fancySquares_get_instagram();
    return $context;
}


function fancySquares_get_instagram()
{
  if(get_transient('instagram')) 
    {
        return get_transient('instagram');
    } 
    else 
    {
      $api = wp_remote_request("instagram-api-url");
      $api = json_decode($api['body']);
      $images = [];

      for($i = 0; $i < 20; $i++)
      {
        $images[$i] = [];
        $images[$i]['image'] = $api->data[$i]->images->standard_resolution->url;
        $images[$i]['url'] = $api->data[$i]->link;
        $images[$i]['likes'] = $api->data[$i]->likes->count;
      }


        set_transient('instagram', $images, 60*60*24); // expires every day
        return $images;
    }

}

然后输出:

{% for insta in fancySquaresInstagram %}

    {{insta['url']}}

  {% endfor %} 

或者可以打印整个内容以更好地了解内部的内容:

{{ fancySquaresInstagram|print_r }}
相关问题