web-dev-qa-db-ja.com

致命的なエラー:未定義のメソッドWP_Error :: get_item_quantity()への呼び出し

プラグインなしでTwitterフィードを表示する方法を実装しました。それは数週間(何ヶ月も、別のサイトでも)動作しましたが、今私には問題を与えています。これがエラーです。

致命的なエラー:27行目の... home.phpの未定義のメソッドWP_Error :: get_item_quantity()を呼び出す

27行目:$ maxitems = $ rss-> get_item_quantity(3);

<?php
include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('https://api.Twitter.com/1/statuses/user_timeline.rss?screen_name=urbanpalatela');
$maxitems = $rss->get_item_quantity(3);
$rss_items = $rss->get_items(0, $maxitems);
?>

<ul>
<?php if ($maxitems == 0) echo '<li>No items.</li>';
else
// Loop through each feed item and display each item as a hyperlink.
foreach ( $rss_items as $item ) : ?>
<li>
<a href='<?php echo $item->get_permalink(); ?>'>
<?php echo str_replace('UrbanPalateLA: ', '&bull;', $item->get_title()); ?>
</a>
</li>
<?php endforeach; ?>
</ul>

エラーの原因となる可能性がある考えはありますか?

2
user1255049

私はあなたがおそらく最初の実行でWP_Errorを受けていると言うでしょう。

$maxitems行と$rss_items行の周りに、以下を追加します。

if( ! is_wp_error( $rss ) ) {
    $maxitems = $rss->get_item_quantity(3);
    $rss_items = $rss->get_items(0, $maxitems);
}

の例に見られるように

1
Eric Holmes

TwitterのURLが有効ではないようです。サードパーティに依存しているため、このエラーを2倍に防ぐことができます。

$maxitemsを使用する前にフィードが空かどうかを確認してください。

例えば:

include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('https://api.Twitter.com/1/statuses/....');

if ($rss->get_item_quanity != 0) { 
   $maxitems = $rss->get_item_quantity(3);
   //rest of your code..
} else { 
   echo 'No feed available'; }

編集:Ericの例は、おそらくif (!is_wp_error( $rss ) )を使ってWPで処理されるので、おそらくより良いです。

第二にあなたのTwitterのURLは何も返されていない、したがってエラー、これはAPIが変更されたため、おそらくあなたはTwitterのドキュメントを参照する必要があります、 https://dev.Twitter.com/docs/api/1.1/ get/status/user_timeline

0
Wyck