0

すべて、私はいくつかのツイートを取得するために次のコードを持っています:

if( ! $tweet ) {
    $url = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name={$username}&count={$how_many}";
    $curl = curl_init();
    curl_setopt( $curl, CURLOPT_URL, $url );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
    $contents = curl_exec( $curl );
    curl_close( $curl );
    if ( ! empty( $contents ) ) {
        // Decode it.
        $tweet = json_decode( $contents );
        }
    }

    // Check to make sure we have a tweet and display it.
    if ( $tweet ) {
        do_action( 'themeblvd_twitter_slider', $tweet, $options, $username, $slider_id );
    } else {
        $output = 'Twitter timed out.';
    }
    return $output;

次に、それらをスライダーに配置するための次のコードがあります。

function themeblvd_twitter_slider_default( $tweet, $options, $username, $slider_id ) {
$tweet = (array)$tweet;
$classes = themeblvd_get_classes( 'slider_standard', true );
$classes .= ' hide-nav_standard';
$classes .= ' show-nav_arrows';
$classes .= ' show-pause_play';

//themeblvd_twitter_slider_js( $slider_id, $options );
?>
<div id="tb-slider-<?php echo $slider_id; ?>" class="slider-wrapper standard-slider-wrapper">
    <div class="slider-inner<?php echo $classes; ?>">   
        <div class="slides-wrapper slides-wrapper-<?php echo $slider_id; ?>">
            <div class="slides-inner">
                <div class="slider standard-slider flexslider">
                    <div class="tb-loader"></div>
                    <ul class="slides">
                                <?php
                                foreach($tweet as $t){
                                ?>
                                <li class="slide tight <?php echo $classes; ?>">
                                    <div class="slide-body">
                                        <div class="grid-protection">
                                        <?php
                                        echo '<span class="tweet-icon '.$options['icon'].'"></span>';
                                        echo '<a href="http://twitter.com/'.$username.'/status/'.$t->id_str.'" target="_blank">';
                                        echo $t->text;
                                        echo '</a>';
                                        ?>

                                        </div><!-- .grid-protection (end) -->
                                    </div><!-- .slide-body (end) -->
                                </li>
                                <?php
                                }
                                ?>
                    </ul>
                </div><!-- .slider (end) -->
            </div><!-- .slides-inner (end) -->                  
        </div><!-- .slides-wrapper (end) -->
    </div><!-- .slider-inner (end) -->
    <div class="design-1"></div>
    <div class="design-2"></div>
    <div class="design-3"></div>
    <div class="design-4"></div>                    
</div><!-- .slider-wrapper (end) -->
<?php
}
?>

このコードは約90%の時間で機能し、ユーザー名などに基づいてツイートを取得します。ただし、約10%の時間は、テキストを表示せずに回転するだけです。ツイートが常に表示されるように、このソリューションを改善できる何かまたは方法を誰かが見ていますか?エラー処理の観点から、ツイートを取得できない場合に表示しないように追加できるものはありますか?

事前にアドバイスをありがとうございます。

4

1 に答える 1

0

Twitterが実際に返すのがツイートのリストであるかどうかを確認してみてください。現時点では、Twitterが何かを返すかどうかだけを確認します。

// Check to make sure we have a tweet and display it.
if ( is_array($tweet) && isset($tweet[0]->id_str) ) {
    do_action( 'themeblvd_twitter_slider', $tweet, $options, $username, $slider_id );
} else {
    $output = 'Twitter timed out.';
}
于 2012-05-01T21:55:23.917 に答える