2016-06-24 2 views
0

나는 this 트위터 플러그인과 협력 중이다. 내 템플릿 내에서 do_shortcode 함수를 사용하여 콘텐츠를 출력합니다. 자신의 other notes 섹션 내에서워드 프레스에서이 필터를 올바르게 사용하는 방법은 무엇입니까?

은, 내가 그것을 출력 내가 할 때, 그러나

add_filter('latest_tweets_render_list')를 사용하여 목록 개체 내에서 트윗

add_filter('latest_tweets_render_list', function(array $list){ 
return '<div>'.$list.'</div>'; 
}, 10, 1); 

내가 얻을 것이다 사용자 정의 HTML 마크 업을 재정의 할 수 있습니다 말한다 array to string conversion이 있고 트윗을 출력하지 않는다는 PHP 경고 메시지가 표시됩니다.

나는 플러그인 코어 파일을 살펴 보았습니다.

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>'; 
} 

어떻게 올바르게 기본 HTML 마크 업을 무시하기 위해 latest_tweet_render_list 필터를 사용합니까? foreach 루프를 사용하려고했지만 트릭도하지 않았습니다. 피할 수 있다면 플러그인 파일을 수정하고 싶지 않습니다.

답변

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); 

당신이 먼저 함수의 상단에 var_dump($list)을 사용할 수 있습니다, 당신의 $list 변수의 항목을 보려면 : 배열이 무엇인지에 따라, 당신은 이런 식으로 뭔가를 할 수 있습니다.

+0

foreach 루프를 시도했지만 마크 업은 약간 잘못되었습니다. 감사합니다. – ProEvilz

+0

아, 그래, 그것이 작동해야한다고 언급하는 걸 잊었 : 아니 걱정 – LeonardChallis

관련 문제